Заэскепить символы Ruby (gsub!)
Полчаса воюю с простой регуляркой. Нужно экранировать некоторые символы для TeX
# \ % и т.д.
sub.gsub! /([\%#])/, '\\1'
Символ процента не трогает вообще
sub.gsub! /([\%#])/, '\\\1'
Не экранирует, но убирает.
Пробовал там #{$1} и т.д. безрезультатно
Ответы (1 шт):
Автор решения: Vadik
→ Ссылка
В Ruby чтобы представить обратный слэш в строке, его нужно экранировать обратным слэшом: "\\" или '\\'. Поэтому вам просто нужно удвоить количество слэшей:
"Какая\\то% строка#".gsub(/[\\%#]/, '\\\\\\0')
# => "Какая\\\\то\\% строка\\#"
В некоторых случаях Ruby может запутать, когда вы, например, пишете '\n' это на самом деле соответствует '\\n':
'\n' == '\\n'
# => true
'\n' == "\\n"
# => true
При этом символ переноса строки это "\n", но не "\\n":
"\n" == "\\n"
# => false