Mit*_*ran 269 ruby ruby-on-rails-3
我在Ruby中有一个字符串:
sentence = "My name is Robert"
Run Code Online (Sandbox Code Playgroud)
如何在不使用复杂代码或循环的情况下轻松替换此句中的任何一个单词?
src*_*der 475
sentence.sub! 'Robert', 'Joe'
Run Code Online (Sandbox Code Playgroud)
如果被替换的单词不在句子中([]=变体将会),则不会导致异常.
以上仅取代了"Robert"的第一个实例.
要替换所有实例,请使用gsub/ gsub!(即"全局替换"):
sentence.gsub! 'Robert', 'Joe'
Run Code Online (Sandbox Code Playgroud)
以上将取代罗伯特与乔的所有实例.
Hna*_*att 123
如果您正在处理自然语言文本并且需要替换单词,而不仅仅是字符串的一部分,则必须向gsub添加一些正则表达式,因为纯文本替换会导致灾难性的结果:
'mislocated cat, vindicating'.gsub('cat', 'dog')
=> "mislodoged dog, vindidoging"
Run Code Online (Sandbox Code Playgroud)
正则表达式具有单词边界,例如\b匹配单词的开头或结尾.从而,
'mislocated cat, vindicating'.gsub(/\bcat\b/, 'dog')
=> "mislocated dog, vindicating"
Run Code Online (Sandbox Code Playgroud)
在Ruby中,与Javascript等其他语言不同,单词边界与UTF-8兼容,因此您可以将它用于具有非拉丁语或扩展拉丁字母的语言:
'???? ? ??????, ??? ??????'.gsub(/\b????\b/, '?????')
=> "????? ? ??????, ??? ??????"
Run Code Online (Sandbox Code Playgroud)
Mit*_*ran 51
您可以尝试使用这种方式:
sentence ["Robert"] = "Roger"
Run Code Online (Sandbox Code Playgroud)
然后句子将成为:
sentence = "My name is Roger" # Robert is replaced with Roger
Run Code Online (Sandbox Code Playgroud)
Sea*_*ill 44
首先,你没有在Ruby中声明类型,所以你不需要第一个string.
要替换字符串中的单词,请执行以下操作:sentence.gsub(/match/, "replacement").
| 归档时间: |
|
| 查看次数: |
326507 次 |
| 最近记录: |