Ответ 1
Если вы правильно поняли, это то, что вы хотите сделать:
puts "What the human does is not like what animal does.".gsub(/(what)/i, '==\1==')
который выведет
== Что == человек делает, это не то, что == что делает животное.
У меня есть проблема с заменой строки в Ruby.
Моя исходная строка: то, что делает человек, не похоже на то, что делает животное.
Я хочу заменить на: == Что == человек делает не так, как == что делает животное.
Я столкнулся с проблемой чувствительности к регистру при использовании gsub. (например, что, что) Я хочу сохранить исходный текст.
любое решение?
Если вы правильно поняли, это то, что вы хотите сделать:
puts "What the human does is not like what animal does.".gsub(/(what)/i, '==\1==')
который выведет
== Что == человек делает, это не то, что == что делает животное.
Важной вещью, которую следует учитывать во всех трех ответах до сих пор, является использование модификатора "i" в регулярном выражении. Это сокращенный способ указать использование параметра Regexp::IGNORECASE
.
Полезное учебное пособие по Ruby Regexp здесь и класс документирован здесь
Используйте блочную форму gsub.
"What the human does is not like what animal does.".gsub(/(what)/i) { |s| "==#{s}==" }
=> "==What== the human does is not like ==what== animal does."
другая версия без скобок() в regex,
puts "What the human does is not like what animal does.".gsub(/what/i,'==\0==')
== Что == человек делает, это не то, что == что делает животное.