А что, если я попытаюсь изменить только часть слова? Например, «Car» на «cah» или наоборот в «Martha» на «Marther». Во втором случае, если бы я только что сделал это следующим образом:
<if sentance.include? "er"
user_input.gsub!(/er/, "a")
end >
Потребуются все «а» в «MArthA», а это не то, чего я хочу.
Любые идеи? Для других примеров. Заменить слова в строке - ruby
str = "Where's Martha, Billy-Bob?"
, вам, вероятно, нужно что-то вродеstr.gsub(/(?<=\bMarth)a\b/,"er") #=> "Where's Marther, Billy-Bob?"
.(?<=\bMarth)
называется позитивным ретроспективным анализом. Это гарантирует, что заменяемому символу ("a"
) предшествует разрыв слова (\b
), за которым следует строка"Marth"
, но это не является частью совпадения. Если бы я знал, что предложение содержит только одно"Martha"
, я мог бы использоватьsub
, а неgub
. Ваше упоминание о cah напомнило мне о Загадке Ворона. - person Cary Swoveland   schedule 24.09.2016a
? - person tadman   schedule 24.09.2016