replacestring中的单词 – ruby
我在Ruby中有一个string:
sentence = "My name is Robert"
如何轻松地replace这个句子中的任何一个单词而不使用复杂的代码或循环?
sentence.sub! 'Robert', 'Joe'
如果被replace的单词不在句子中( []=
variant将不会导致exception)。
如何replace所有实例?
以上只取代“罗伯特”的第一个例子。
要replace所有实例,请使用gsub
/ gsub!
(即“全球替代”):
sentence.gsub! 'Robert', 'Joe'
上述将取代罗伯特与乔的所有情况。
如果你正在处理自然语言文本,需要replace一个字,只需要把一部分string加起来,就必须在你的gsub中添加一些正则expression式。 因为纯文本replace会导致灾难性的结果:
'mislocated cat, vindicating'.gsub('cat', 'dog') => "mislodoged dog, vindidoging"
正则expression式有单词边界,如\b
,匹配单词的开始或结束。 从而,
'mislocated cat, vindicating'.gsub(/\bcat\b/, 'dog') => "mislocated dog, vindicating"
在Ruby中,与JavaScript等其他语言不同,字边界与UTF-8兼容,因此您可以将其用于非拉丁字母或扩展拉丁字母的语言:
'сіль у кисіль, для весіль'.gsub(/\bсіль\b/, 'цукор') => "цукор у кисіль, для весіль"
首先,你不要在Ruby中声明types,所以你不需要第一个string
。
要replacestring中的单词,请执行: sentence.gsub(/match/, "replacement")
。
你可以尝试使用这种方式:
sentence ["Robert"] = "Roger"
那么这句话就会变成:
sentence = "My name is Roger" # Robert is replaced with Roger