2

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

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

2 回答 2

6

如果 first\是转义字符,则不应将其打印出来。这就是发生在 3rd 的事情\

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

我觉得应该是3

size/length没有说谎,所以它当然是两个。

在单引号字符串中,\\是单个字符\,并且\'是单个字符'。所以得到的字符串是\'. puts比它更有用,inspect因为它没有显示任何转义,只是文字内容:

puts '\\\''
# prints: \'
于 2013-10-17T04:16:29.373 回答
4

这是答案:

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

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

编辑(正如@Andrew Marshall 所说)

string='\\\''
string.each_char{ |char| puts char }
# >> \
# >> '
于 2013-10-17T04:15:14.517 回答