反斜杠仅出现在irb
由于它打印语句结果的方式。如果您通过gsub
ed 字符串到另一种方法,例如puts
,您将在转义序列转换后看到“真实”表示。
1.9.0 > sentence = 'This is a quote, “Hey guys!”'
=> "This is a quote, \342\200\234Hey guys!\342\200\235"
1.9.0 > sentence.gsub('“', "'")
=> "This is a quote, 'Hey guys!\342\200\235"
1.9.0 > puts sentence.gsub('“', "'")
This is a quote, 'Hey guys!”
=> nil
另请注意,输出后puts
, 我们看=> nil
表明打电话给puts
回nil
.
您可能注意到,有趣的引用仍然位于输出的末尾puts
:这是因为引号是两个不同的转义序列,而我们只命名了一个。但我们可以用正则表达式来解决这个问题gsub
:
1.9.0 > puts sentence.gsub(/(“|”)/, 34.chr)
This is a quote, "Hey guys!"
=> nil
此外,在许多情况下,您可以在 Ruby 字符串中交换单引号和双引号——双引号执行扩展,而单引号则不执行扩展。您可以通过以下几种方法获取仅包含双引号的字符串:
1.9.0 > '"' == 34.chr
=> true
1.9.0 > %q{"} == 34.chr
=> true
1.9.0 > "\"" == 34.chr
=> true