У меня есть строка в Ruby:
sentence = "My name is Robert"
Как я могу легко заменить любое слово в этом предложении без использования сложного кода или цикла?
У меня есть строка в Ruby:
sentence = "My name is Robert"
Как я могу легко заменить любое слово в этом предложении без использования сложного кода или цикла?
Вы можете попробовать использовать этот способ:
sentence ["Robert"] = "Roger"
Тогда предложение станет:
sentence = "My name is Roger" # Robert is replaced with Roger
sentence.sub! 'Robert', 'Joe'
Не будет вызывать исключение, если замещаемое слово не находится в предложении (вариант []=
).
Вышеупомянутый заменяет только первый экземпляр "Роберт".
Чтобы заменить все экземпляры, используйте gsub
/gsub!
(т.е. глобальная замена):
sentence.gsub! 'Robert', 'Joe'
Вышеупомянутое заменит все экземпляры Роберта Джо.
Если вы имеете дело с текстом на естественном языке и вам нужно заменить слово, гайка просто часть строки, вам нужно добавить щепотку регулярных выражений в ваш gsub. Поскольку простая замена текста может привести к катастрофическим результатам:
'mislocated cat, vindicating'.gsub('cat', 'dog')
=> "mislodoged dog, vindidoging"
Регулярные выражения имеют границы слов, например \b
, которые соответствуют началу или концу слова. Таким образом,
'mislocated cat, vindicating'.gsub(/\bcat\b/, 'dog')
=> "mislocated dog, vindicating"
В Ruby, в отличие от некоторых других языков, таких как Javascript, границы слов совместимы с UTF-8, поэтому вы можете использовать его для языков с нелатинскими или расширенными латинскими алфавитами:
'сіль у кисіль, для весіль'.gsub(/\bсіль\b/, 'цукор')
=> "цукор у кисіль, для весіль"
Во-первых, вы не объявляете тип в Ruby, поэтому вам не нужен первый string
.
Чтобы заменить слово в строке, выполните следующие действия: sentence.gsub(/match/, "replacement")
.