长度为" \ n"和' \ n'

时间:2014-05-02 18:46:04

标签: ruby

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

2 个答案:

答案 0 :(得分:9)

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

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

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

irb(main):001:0> puts "a\nb"
a
b
irb(main):002:0> puts 'a\nb'
a\nb

答案 1 :(得分:4)

ruby​​中的双引号字符串对转义序列很敏感。 \ n是"换行符"的转义序列。字符(ascii 0x0A)。但是,ruby中的单引号字符串不会查找转义序列,因此第二个字符串是一个字面反斜杠字符,后跟一个文字n。