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