Как может ruby ​​выполнить эту задачу (поиск и замена строк без учета регистра в Ruby)? - PullRequest
12 голосов
/ 19 ноября 2009

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

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

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

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

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

Ответы [ 4 ]

20 голосов
/ 19 ноября 2009

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

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

, который выдаст

== То, что делает == человек, не похоже на то, что == делает то, что делает животное.

3 голосов
/ 19 ноября 2009

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

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

2 голосов
/ 19 ноября 2009

другая версия без скобок () в регулярном выражении,

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

== То, что делает человек ==, не похоже на то, что делает животное ==. = 1004 *

2 голосов
/ 19 ноября 2009

Используйте блочную форму для 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."
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...