有人可以向我解释为什么"\n".length
会返回1
而'\n'.length
会返回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。