为什么string.size
和string.length
2
?我认为它应该是3
。如果第一个\
是转义字符,则不应打印出来。这就是第三个\
发生的事情。
string='\\\'' # => "\\'"
string.size # => 2
string.length # => 2
答案 0 :(得分:6)
如果第一个
\
是转义字符,则不应打印出来。这就是第3\
发生的事情。
不,因为正在打印的内容是String#inspect
的结果,它会为双引号字符串转义。由于此处不需要转义'
,因此不需要转义字符(\
)。
我认为应该是3
size
/ length
不会撒谎,所以它实际上是两个。
在单引号字符串中,\\
是单个字符\
,\'
是单个字符'
。所以结果字符串是\'
。 puts
比inspect
更有用,因为它没有显示任何转义,只是文字内容:
puts '\\\''
# prints: \'
答案 1 :(得分:4)
以下是答案:
string='\\\''
string.chars # => ["\\", "'"]
在这种情况下,您应该使用String#chars
来查看用于组成字符串的字符数和数量。所以string.chars
的输出告诉您的字符串有2个字符,因此大小为2.您有2个字符:一个是\
,另一个是'
。它们都被\
转义。
编辑(正如@Andrew Marshall所说)
string='\\\''
string.each_char{ |char| puts char }
# >> \
# >> '