Puts "\\".gsub("\\", "\\\\")

Hello, I have a mini-ruby quiz. Guess what this line of code writes to
the console, then try it for yourself:

puts “\”.gsub("\", “\\”)

Why is that so?

Martin

From: martinus [mailto:[email protected]]

Hello, I have a mini-ruby quiz. Guess what this line of code writes to

the console, then try it for yourself:

puts “\”.gsub(“\”, “\\”)

puts “\”.gsub(“\”, “\\”)

#=> nil

Why is that so?

faq. escaping the escape in sub/gsub. search the archives.

maybe you want something like,

puts “\”.gsub(“\”){“\\”}
\
#=> nil

ie, use block wc is a lot more handy.

kind regards -botp

Hello, I have a mini-ruby quiz. Guess what this line of code writes to
the console, then try it for yourself:

puts “\”.gsub(“\”, “\\”)

Why is that so?

Well, it’s an faq. In short: The backslash is special in strings and
in the replacement text. So for every literal backslash you need four
backslashes, which is quite unreadable. If you don’t need \1 and Co you
better use the block form: gsub(“\”) { “\\” }.

mfg, simon … hth

On Thu, Apr 24, 2008 at 8:35 AM, Simon K. [email protected] wrote:

Well, it’s an faq. In short: The backslash is special in strings and
in the replacement text. So for every literal backslash you need four
backslashes, which is quite unreadable. If you don’t need \1 and Co you
better use the block form: gsub(“\”) { “\\” }.

Another thing which trips up newbies, and sometimes not so newbies, is
the difference between the contents of a sring, and the ‘inspect’
presentation of a string, particularly when the string contains
escapes:

irb(main):001:0> puts “\”

=> nil
irb(main):002:0> p “\”
“\”
=> nil

The point is that the literal string “\” only contains one character.
The puts method shows you the contents of the string, while p (which
is practically equivalent to puts string.inspect produces a literal
representation.


Rick DeNatale

My blog on Ruby
http://talklikeaduck.denhaven2.com/

martinus [email protected] wrote:

Hello, I have a mini-ruby quiz. Guess what this line of code writes to
the console, then try it for yourself:

puts “\”.gsub(“\”, “\\”)

We were just up and down this road (and I gave a workaround):

http://groups.google.com/group/comp.lang.ruby/msg/d370b684485c8838

m.