How to represent a single backslash?

How do a put a single backslash into a string in Ruby?

irb(main):006:0> ‘’
irb(main):007:0’ ’
=> “’\n”
irb(main):008:0> ‘\’
=> “\”
irb(main):009:0>

in 6, the backslash escapes the ending ', which is not what I wanted.
In 8, the double backslash becomes two backslashes, which is not what I
wanted either.
I get exactly the same problem with double quotes.

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

=> nil
irb(main):002:0> puts ‘\’

=> nil

There is a difference between what is written in your code and what
the output will be.
“\” is not the same as “”, which is why irb prints the string
constant as you entered it. But if you print it, it will output what
you expected, i.e. a backslash.

On Mon, Jan 25, 2010 at 9:55 AM, lalawawa [email protected] wrote:

the double backslash becomes two backslashes, which is not what I wanted
either.
I get exactly the same problem with double quotes.

It’s not 2 backslashes, just one. Irb shows you two because it’s the
representation of the inspected string:

irb(main):003:0> ‘\’
=> “\”
irb(main):004:0> ‘\’.size
=> 1
irb(main):005:0> puts ‘\’

=> nil

Jesus.

2010/1/25 Xavier Noëlle [email protected]:

constant as you entered it. But if you print it, it will output what
you expected, i.e. a backslash.

Right. Additional explanation: the reason for this is that IRB by
default uses #inspect - the same method that #p uses for printing:

irb(main):007:0> s = “a”
=> “a”
irb(main):008:0> puts s
a
=> nil
irb(main):009:0> p s
“a”
=> “a”
irb(main):010:0> puts s.inspect
“a”
=> nil
irb(main):011:0> s
=> “a”
irb(main):012:0>

Kind regards

robert