Как Ruby может выполнить эту задачу (поиск и замена строки в Ruby)?

У меня есть проблема с заменой строки в Ruby.

Моя исходная строка: то, что делает человек, не похоже на то, что делает животное.

Я хочу заменить на: == Что == человек делает не так, как == что делает животное.

Я столкнулся с проблемой чувствительности к регистру при использовании gsub. (например, что, что) Я хочу сохранить исходный текст.

любое решение?

Ответ 1

Если вы правильно поняли, это то, что вы хотите сделать:

puts "What the human does is not like what animal does.".gsub(/(what)/i, '==\1==')

который выведет

== Что == человек делает, это не то, что == что делает животное.

Ответ 2

Важной вещью, которую следует учитывать во всех трех ответах до сих пор, является использование модификатора "i" в регулярном выражении. Это сокращенный способ указать использование параметра Regexp::IGNORECASE.

Полезное учебное пособие по Ruby Regexp здесь и класс документирован здесь

Ответ 3

Используйте блочную форму 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."

Ответ 4

другая версия без скобок() в regex,

puts "What the human does is not like what animal does.".gsub(/what/i,'==\0==')

== Что == человек делает, это не то, что == что делает животное.