From: Stefano Crocco Date: 2007-12-30T18:30:49+09:00 Subject: Re: sub is odd with # Alle domenica 30 dicembre 2007, Pavel Pvl ha scritto: > seems to me as though I'm redundant on this forum... > > > well anyway, doing '@@@@'.sub('@','#') > > returns > '/#@@@' > > how can I make it so that it doesn't through in the / ? > > using 1.9 btw > > gsub doesn't do that, but I specifically ned sub to do that. > > ty First of all, I think what you see is not a '/' but a '\'. I don't think the \ is part of the returned string. I assume you're trying this in irb. irb displays the return value of every expression using its inspect method. String#inspect escapes some characters, such as double quotes and the # character, when it would be interpreted as the beginning of string interpolation. Since "#@" is the beginning of a string interpolation, it gets escaped. If you do a puts '@@@@'.sub('@','#'), or examine the first element of the returned string, you'll see that the returned string is correct. Using gsub instead of sub doesn't display the \ because it replaces all the @ with #, and since the sequence '##' isn't a special sequence, it's not escaped by String#inspect. I hope this helps Stefano