simple gsub method

Discussion in 'Ruby' started by Jack Smith, Oct 1, 2008.

1. Jack SmithGuest

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/.

Jack Smith, Oct 1, 2008

2. Stefano CroccoGuest

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

Stefano Crocco, Oct 1, 2008

3. Jack SmithGuest

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/.

Jack Smith, Oct 1, 2008
4. Sebastian HungereckerGuest

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:
ICQ: 205544826

Sebastian Hungerecker, Oct 1, 2008
5. Jack SmithGuest

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/.

Jack Smith, Oct 1, 2008