Обратная косая черта отображается только в irb
из-за способа, которым она печатает результат оператора. Если вместо этого вы передадите строку gsub
ed другому методу, например puts
, вы увидите «реальное» представление после преобразования escape-последовательностей.
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
: это потому, что кавычки - это две разные escape-последовательности, и мы назвали только одну. Но мы можем позаботиться об этом с помощью регулярного выражения в 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