[lnkForumImage]
TotalShareware - Download Free Software

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


 

Forums >

comp.lang.ruby

strip doesn't take a character set?

Xeno Campanoli

6/8/2009 9:58:00 PM

I wanna do something like newstr = str.strip(/\D/)

I know I could do newstr = str.sub(/^\D*/,'').sub(/\D*$/,''), but is there any
better way?

xc

5 Answers

Robert Klemme

6/8/2009 10:06:00 PM

0

On 08.06.2009 23:57, Xeno Campanoli wrote:
> I wanna do something like newstr = str.strip(/\D/)
>
> I know I could do newstr = str.sub(/^\D*/,'').sub(/\D*$/,''), but is there any
> better way?

Maybe

newstr = str.sub /\A\D*(.*?)\D*\z/, '\\1'
newstr = str[/\A\D*(.*?)\D*\z/, 1]

Kind regards

robert

--
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestprac...

Trans

6/8/2009 10:08:00 PM

0



On Jun 8, 5:57=A0pm, Xeno Campanoli <xeno.campan...@gmail.com> wrote:
> I wanna do something like newstr =3D str.strip(/\D/)
>
> I know I could do newstr =3D str.sub(/^\D*/,'').sub(/\D*$/,''), but is th=
ere any
> better way?

Maybe

str.sub(/^\D*(.*)\D*$/, '\1')

T.

Joel VanderWerf

6/8/2009 10:09:00 PM

0

> I wanna do something like newstr = str.strip(/\D/)
>
> I know I could do newstr = str.sub(/^\D*/,'').sub(/\D*$/,''), but is there
> any
> better way?

Use #slice / #[]:

irb(main):006:0> s = "aaa111bbb222ccc"
=> "aaa111bbb222ccc"
irb(main):007:0> s[/\A\D*(.*)\D*\z/, 1]
=> "111bbb222ccc"


Joel VanderWerf

6/8/2009 10:13:00 PM

0

>> I wanna do something like newstr = str.strip(/\D/)
>>
>> I know I could do newstr = str.sub(/^\D*/,'').sub(/\D*$/,''), but is
>> there
>> any
>> better way?
>
> Use #slice / #[]:
>
> irb(main):006:0> s = "aaa111bbb222ccc"
> => "aaa111bbb222ccc"
> irb(main):007:0> s[/\A\D*(.*)\D*\z/, 1]
> => "111bbb222ccc"

Oops, gotta be non-greedy:

irb(main):001:0> s = "aaa111bbb222ccc"
=> "aaa111bbb222ccc"
irb(main):002:0> s[/\A\D*(.*?)\D*\z/, 1]
=> "111bbb222"


Daniel DeLorme

6/9/2009 12:12:00 AM

0

Robert Klemme wrote:
> On 08.06.2009 23:57, Xeno Campanoli wrote:
>> I wanna do something like newstr = str.strip(/\D/)
>>
>> I know I could do newstr = str.sub(/^\D*/,'').sub(/\D*$/,''), but is
>> there any better way?
>
> Maybe
>
> newstr = str.sub /\A\D*(.*?)\D*\z/, '\\1'
> newstr = str[/\A\D*(.*?)\D*\z/, 1]

And a final tweak to account for \n:
newstr = str.sub /\A\D*(.*?)\D*\z/m, '\\1'
newstr = str[/\A\D*(.*?)\D*\z/m, 1]