Gsub игнорирует интерполяцию строк - PullRequest
0 голосов
/ 31 января 2020

Я пытаюсь gsub точных символов #{} без ruby, рассматривая их как интерполяцию строк.

Например:

"Test string".gsub("string", "#{cat}") должно стать буквальной строкой Test #{cat}, а не переменной.

Ответы [ 2 ]

4 голосов
/ 31 января 2020

Используйте одинарные кавычки. Двойные кавычки используются для интерполяции; #{} игнорируется в одинарных кавычках:

x = 'Test string'.gsub('string', '#{cat}')
=> "Test \#{cat}"

puts x
Test #{cat}
2 голосов
/ 31 января 2020

Первое, что нужно отметить, это то, что это не имеет ничего общего с gsub, только строка, которая является вторым аргументом. Какой бы ни была эта строка (конечно, после интерполяции), она будет заменой для каждой подстроки "string".

Вот несколько способов, которыми можно изменить второй аргумент. Все возвращаемые значения "\#{cat}" и puts "\#{cat}" отображают #{cat}.

Используйте одинарные кавычки 1

'\#{cat}'

Escape the знак фунта или левая скобка

"\#{cat}"
"#\{cat}"

Объединить две строки

"#" + "{cat}"
"#" << "{cat}"
"#".concat("{cat}")
"#" "{cat}"

Использовать интерполяцию строк для символа фунта

"#{'#'}{cat}"

1. Взято из ответа @ anothermh.

...