Ruby中使用字符串#gsub的句子替换

Ruby中使用字符串#gsub的句子替换,ruby,string,gsub,string-substitution,Ruby,String,Gsub,String Substitution,如果我只是想改变一个单词的一部分呢?像“Car”到“cah”,或者反之亦然,在“Martha”到“Marther”。在第二种情况下,如果我只是这样做一个if: <if sentance.include? "er" user_input.gsub!(/er/, "a") end > “玛莎”中的所有“a”都需要,这不是我想要的 有什么想法吗? 其他例子。 您的示例和代码显示了完全相反的结果。假设要将Martha的最后一个“a”替换为“er”,则应将字符串末尾的“a”替换

如果我只是想改变一个单词的一部分呢?像“Car”到“cah”,或者反之亦然,在“Martha”到“Marther”。在第二种情况下,如果我只是这样做一个if:

<if sentance.include? "er"
    user_input.gsub!(/er/, "a")
end > 

“玛莎”中的所有“a”都需要,这不是我想要的

有什么想法吗? 其他例子。

您的示例和代码显示了完全相反的结果。假设要将Martha的最后一个“a”替换为“er”,则应将字符串末尾的“a”替换为:

user_input.gsub!(/a$/,'er')
如果字符串是“玛莎在哪里,比利鲍勃?”:


\b是单词的结尾或开头匹配符

如果
str=“玛莎,比利鲍勃在哪里?”
,您可能需要类似
str.gsub(/(?“玛莎,比利鲍勃在哪里?”
)(?你需要更好地定义你的语法,以及完成这些转换的规则。这只是最后一个
a
?crow笑话很棒。基本上,我的目标是构建一个从基本speach到新英格兰口音的文本输入转换器。所以使用这些规则,我只关心单词的结尾,特别是单词that end in As或ERs-在方言中是swap。a$可能有效,但在行尾意味着什么?它是在字符串中搜索以As结尾的单词吗?还是只取字符串中的最后一个单词?还是a\z?请注意,
a$
是行尾,而不一定是字符串的结尾(即
a\z
)。在这种情况下,这可能无关紧要,但在其他情况下(如数据验证),这可能是一个安全漏洞,因此最好注意。
user.gsub!(/a\b/,'er')