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
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
# 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
From: martinus [mailto:martin.ankerl@gmail.com]
* martinus <martin.ankerl@gmail.com> (11:53) schrieb:
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
We were just up and down this road (and I gave a workaround):
<http://groups.google.com/group/comp.lang.ruby/msg/d370b684485c8838>
m.
martinus <martin.ankerl@gmail.com> 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("\\", "\\\\")
--
matt neuburg, phd = matt@tidbits.com, Matt Neuburg’s Home Page
Leopard - http://www.takecontrolbooks.com/leopard-customizing.html
AppleScript - http://www.amazon.com/gp/product/0596102119
Read TidBITS! It's free and smart. http://www.tidbits.com
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.
On Thu, Apr 24, 2008 at 8:35 AM, Simon Krahnke <overlord@gmx.li> wrote:
* martinus <martin.ankerl@gmail.com> (11:53) schrieb:
> 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("\\") { "\\\\" }.
--
Rick DeNatale
My blog on Ruby
http://talklikeaduck.denhaven2.com/