我在Ruby中有一个字符串:
sentence = "My name is Robert"
我怎样才能替换这句话中的任何一个词,而不使用复杂的代码或循环?
我在Ruby中有一个字符串:
sentence = "My name is Robert"
我怎样才能替换这句话中的任何一个词,而不使用复杂的代码或循环?
当前回答
如果你正在处理自然语言文本,需要替换一个单词,而不仅仅是字符串的一部分,你必须在你的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/, 'цукор')
=> "цукор у кисіль, для весіль"
其他回答
你可以试着用这种方式:
sentence ["Robert"] = "Roger"
那么句子就变成:
sentence = "My name is Roger" # Robert is replaced with Roger
如果你正在处理自然语言文本,需要替换一个单词,而不仅仅是字符串的一部分,你必须在你的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中不声明类型,因此不需要第一个字符串。
要替换字符串中的单词,可以使用:sentence。gsub(/比赛/,“替换”)。
sentence.sub! 'Robert', 'Joe'
如果替换的单词不在句子中,则不会引起异常([]=变体will)。
如何替换所有实例?
以上内容仅替换“Robert”的第一个实例。
使用gsub/gsub!(即。“全球替换”):
sentence.gsub! 'Robert', 'Joe'
上面将用Joe替换Robert的所有实例。