[lnkForumImage]
TotalShareware - Download Free Software

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


 

Forums >

comp.lang.ruby

Stuff method

Carl Graff

1/24/2008 12:23:00 AM

Hi,

I missed the stuff function or method found in some languages so I added
this method to my Helpers mixin.


def stuff(str, substr, rplstr, prefix = '.*')
r1 = Regexp.new("(#{prefix})(#{substr})(.*)")
str.gsub(r1,'\1'+rplstr+'\3')
end

puts stuff('012-014640-001','-.','-X')

This works but if you know a better way please share so I can learn.

In particular it would be nicer I think if it worked like this:

new_str = '012-014640-001'.stuff('-.','-X')

Thanks,
Carl
--
Posted via http://www.ruby-....

3 Answers

Michael Guterl

1/24/2008 12:37:00 AM

0

[Note: parts of this message were removed to make it a legal post.]

On Jan 23, 2008 7:23 PM, Carl Graff <cagraff@cox.net> wrote:

> Hi,
>
> I missed the stuff function or method found in some languages so I added
> this method to my Helpers mixin.
>
>
> def stuff(str, substr, rplstr, prefix = '.*')
> r1 = Regexp.new("(#{prefix})(#{substr})(.*)")
> str.gsub(r1,'\1'+rplstr+'\3')
> end
>
> puts stuff('012-014640-001','-.','-X')
>
> This works but if you know a better way please share so I can learn.
>
> In particular it would be nicer I think if it worked like this:
>
> new_str = '012-014640-001'.stuff('-.','-X')
>
> Try this if you want it to work like above. You should always be careful
when modifying core classes, yada yada yada...

class String
def stuff(substr, rplstr, prefix = '.*')
r1 = Regexp.new("(#{prefix})(#{substr})(.*)")
self.gsub(r1,'\1'+rplstr+'\3')
end
end

Michael Guterl

Carl Graff

1/24/2008 12:56:00 AM

0

Michael Guterl wrote:
> On Jan 23, 2008 7:23 PM, Carl Graff <cagraff@cox.net> wrote:
>
>>
>> puts stuff('012-014640-001','-.','-X')
>>
>> This works but if you know a better way please share so I can learn.
>>
>> In particular it would be nicer I think if it worked like this:
>>
>> new_str = '012-014640-001'.stuff('-.','-X')
>>
>> Try this if you want it to work like above. You should always be careful
> when modifying core classes, yada yada yada...
>
> class String
> def stuff(substr, rplstr, prefix = '.*')
> r1 = Regexp.new("(#{prefix})(#{substr})(.*)")
> self.gsub(r1,'\1'+rplstr+'\3')
> end
> end
>
> Michael Guterl

Thanks Michael!

I guess the use of self is because gsub is itself a member of String.
Just out of curiosity I wonder if I can use
String.gsub(r1,'\1'+rplstr+'\3') as well - but even should that work I'm
sure it is unorthodox.

Carl


--
Posted via http://www.ruby-....

Joel VanderWerf

1/24/2008 3:23:00 AM

0

Carl Graff wrote:
> Hi,
>
> I missed the stuff function or method found in some languages so I added
> this method to my Helpers mixin.
>
>
> def stuff(str, substr, rplstr, prefix = '.*')
> r1 = Regexp.new("(#{prefix})(#{substr})(.*)")
> str.gsub(r1,'\1'+rplstr+'\3')
> end
>
> puts stuff('012-014640-001','-.','-X')
>
> This works but if you know a better way please share so I can learn.
>
> In particular it would be nicer I think if it worked like this:
>
> new_str = '012-014640-001'.stuff('-.','-X')

How about:

s = '012-014640-001'
puts s.gsub(/(.*)-.(.*)/, "\\1-X\\2")
puts s.gsub(/(.*)-.(.*)/) { "#{$1}-X#{$2}" }

--
vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407