[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

string extraction

Navindra Umanee

1/29/2005 7:06:00 AM

Hi,

I have strings of the form:

string='.///root/1068663688//1068824962/1068836207//1068932537///'

Basically, I want to extract the last number in the string.

Right now I'm doing:

string[/(\d*)\/*$/].delete('/')

But I've already matched the digit I want, so the delete is just
superfluous work. How can I extract the number without doing a
separate delete?

Thanks,
Navin.


6 Answers

Eko Budi Setiyo

1/29/2005 7:21:00 AM

0

Navindra Umanee wrote:

>Hi,
>
>I have strings of the form:
>
>string='.///root/1068663688//1068824962/1068836207//1068932537///'
>
>Basically, I want to extract the last number in the string.
>
>Right now I'm doing:
>
>string[/(\d*)\/*$/].delete('/')
>
>But I've already matched the digit I want, so the delete is just
>superfluous work. How can I extract the number without doing a
>separate delete?
>
>Thanks,
>Navin.
>
>
>
>
>
class String
def str_replace(what,with)
re = Regexp.new(Regexp.quote(what))
self.gsub(re) {with}
end

def str_ireplace(what,with)
re = Regexp.new(Regexp.quote(what), Regexp::IGNORECASE)
self.gsub(re) {with}
end
end

string='.///root/1068663688//1068824962/1068836207//1068932537///'

string = string.str_replace('///','')
string = string.str_replace('//','/')
temp = string.split('/')
return temp[4]

regards
Eko






Martin Weber

1/29/2005 7:41:00 AM

0

On Sat, Jan 29, 2005 at 04:05:57PM +0900, Navindra Umanee wrote:
> Hi,
>
> I have strings of the form:
>
> string='.///root/1068663688//1068824962/1068836207//1068932537///'
>
> Basically, I want to extract the last number in the string.

string[%r|/(\d+)/+$|, 1] ?

hth,

-Martin


dblack

1/29/2005 11:36:00 AM

0

dblack

1/29/2005 11:43:00 AM

0

Navindra Umanee

1/29/2005 4:16:00 PM

0

Martin S. Weber <Ephaeton@gmx.net> wrote:
> string[%r|/(\d+)/+$|, 1] ?

Exactly what I was looking for, thanks. The zero-width positive
lookahead is also interesting.

str[regexp, fixnum]

Is there a similar way to combine and use different matched groups
instead of being restricted to a fixnum? Say instead of just \1 you
had a match for \1 and \2 and you wanted the output string to be \2 \1

"byru"[/(by)(ru)/, \2\1]

should output "ruby".

Thanks,
Navin.


Bertram Scharpf

1/29/2005 7:24:00 PM

0

Hi,

Am Samstag, 29. Jan 2005, 16:05:57 +0900 schrieb Navindra Umanee:
> I have strings of the form:
>
> string='.///root/1068663688//1068824962/1068836207//1068932537///'
>
> Basically, I want to extract the last number in the string.
>
> string[/(\d*)\/*$/].delete('/')
>
> But I've already matched the digit I want, so the delete is just
> superfluous work. How can I extract the number without doing a
> separate delete?

Maybe you simply need to say

string[/\d+\/*$/].to_i

that doesn't mind trailing slashes.

Bertram

--
Bertram Scharpf
Stuttgart, Deutschland/Germany
http://www.bertram-...