Ruby字符串长度“\\\'”

时间:2013-10-17 04:12:18

标签: ruby string

为什么string.sizestring.length 2?我认为它应该是3。如果第一个\是转义字符,则不应打印出来。这就是第三个\发生的事情。

string='\\\'' # => "\\'"
string.size   # => 2
string.length # => 2

2 个答案:

答案 0 :(得分:6)

  

如果第一个\是转义字符,则不应打印出来。这就是第3 \发生的事情。

不,因为正在打印的内容是String#inspect的结果,它会为双引号字符串转义。由于此处不需要转义',因此不需要转义字符(\)。

  

我认为应该是3

size / length不会撒谎,所以它实际上是两个。

在单引号字符串中,\\是单个字符\\'是单个字符'。所以结果字符串是\'putsinspect更有用,因为它没有显示任何转义,只是文字内容:

puts '\\\''
# prints: \'

答案 1 :(得分:4)

以下是答案:

string='\\\''
string.chars # => ["\\", "'"]

在这种情况下,您应该使用String#chars来查看用于组成字符串的字符数和数量。所以string.chars的输出告诉您的字符串有2个字符,因此大小为2.您有2个字符:一个是\,另一个是'。它们都被\转义。

编辑(正如@Andrew Marshall所说)

string='\\\''
string.each_char{ |char| puts char }
# >> \
# >> '