长度"\n"和"\n"

app*_*lis 4 ruby

有人可以向我解释为什么"\n".length返回1'\n'.length返回2

Mar*_*eed 9

因为反斜杠转义序列不在单引号字符串中处理.这"\n"是一个换行符(它是一个字符),但'\n'实际上是一个反斜杠后跟一个'n'(所以两个字符).你可以通过询问每个字符串的各个字符来看到这个:

irb(main):001:0> "\n".chars  #=> ["\n"]
irb(main):002:0> '\n'.chars  #=> ["\\", "n"]
Run Code Online (Sandbox Code Playgroud)

..或者只是将它们打印出来:

irb(main):001:0> puts "a\nb"
a
b
irb(main):002:0> puts 'a\nb'
a\nb
Run Code Online (Sandbox Code Playgroud)