s = "#main= 'quotes'
s.gsub "'", "\\'" # => "#main= quotes'quotes"
Кажется, это неправильно, я ожидаю получить "#main= \\'quotes\\'"
, когда я не использую escape-символ, тогда он работает, как и ожидалось.
s.gsub "'", "*" # => "#main= *quotes*"
Такдолжно быть что-то связанное с экранированием.
Использование ruby 1.9.2p290
Мне нужно заменить одинарные кавычки на обратную косую черту и кавычку.
Еще больше несоответствий:
"\\'".length # => 2
"\\*".length # => 2
# As expected
"'".gsub("'", "\\*").length # => 2
"'a'".gsub("'", "\\*") # => "\\*a\\*" (length==5)
# WTF next:
"'".gsub("'", "\\'").length # => 0
# Doubling the content?
"'a'".gsub("'", "\\'") # => "a'a" (length==3)
Что здесь происходит?