Velocity Reviews > Ruby > simple gsub method

# simple gsub method

Jack Smith
Guest
Posts: n/a

 10-01-2008
I have simplified my method for searching test to the following:

def replacer(a, b)
x = "now is the time for all good men to come to the aid of their
country"
x.gsub(/#{a}/, b)
puts x
end

puts "enter what to replace: "
j = gets
puts "enter replacer word: "
h = gets

replacer(j, h)

Can someone help me determine why gsub can't match my "a" value?

thanks
--
Posted via http://www.ruby-forum.com/.

Stefano Crocco
Guest
Posts: n/a

 10-01-2008
Alle Wednesday 01 October 2008, Jack Smith ha scritto:
> I have simplified my method for searching test to the following:
>
> def replacer(a, b)
> x = "now is the time for all good men to come to the aid of their
> country"
> x.gsub(/#{a}/, b)
> puts x
> end
>
> puts "enter what to replace: "
> j = gets
> puts "enter replacer word: "
> h = gets
>
> replacer(j, h)
>
> Can someone help me determine why gsub can't match my "a" value?
>
> thanks

Strings returned by gets end in a newline, which doesn't exist in your string,
so no match happens. To solve this, you can do

j = gets.chomp

and the same for h.

I hope this helps

Stefano

Jack Smith
Guest
Posts: n/a

 10-01-2008
It does help Stefano as I had forgotton about \n so thanks for that but
my script still does not match on my "a" value even with the chomp

Stefano Crocco wrote:
> Alle Wednesday 01 October 2008, Jack Smith ha scritto:
>> j = gets
>> puts "enter replacer word: "
>> h = gets
>>
>> replacer(j, h)
>>
>> Can someone help me determine why gsub can't match my "a" value?
>>
>> thanks

>
> Strings returned by gets end in a newline, which doesn't exist in your
> string,
> so no match happens. To solve this, you can do
>
> j = gets.chomp
>
> and the same for h.
>
> I hope this helps
>
> Stefano

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

Sebastian Hungerecker
Guest
Posts: n/a

 10-01-2008
Jack Smith wrote:
> x.gsub(/#{a}/, b)

You don't use the return value of gsub, so it is thrown away and this line
basically does nothing. Calling gsub on x, does not change x (gsub! would).

HTH,
Sebastian
--
Jabber: http://www.velocityreviews.com/forums/(E-Mail Removed)
ICQ: 205544826

Jack Smith
Guest
Posts: n/a

 10-01-2008
I take that back Stefano....you solved it for me!
I forgot to add the x.gsub! ....when I did, my script is working.

thanks a REAL lot for helping me with this!

j

Jack Smith wrote:
> It does help Stefano as I had forgotton about \n so thanks for that but
> my script still does not match on my "a" value even with the chomp
>
>
>
>
> Stefano Crocco wrote:
>> Alle Wednesday 01 October 2008, Jack Smith ha scritto:
>>> j = gets
>>> puts "enter replacer word: "
>>> h = gets
>>>
>>> replacer(j, h)
>>>
>>> Can someone help me determine why gsub can't match my "a" value?
>>>
>>> thanks

>>
>> Strings returned by gets end in a newline, which doesn't exist in your
>> string,
>> so no match happens. To solve this, you can do
>>
>> j = gets.chomp
>>
>> and the same for h.
>>
>> I hope this helps
>>
>> Stefano

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