gpt4 book ai didi

Ruby 替换词

转载 作者:太空宇宙 更新时间:2023-11-03 18:17:37 26 4
gpt4 key购买 nike

例子我有具体情况。我正在尝试替换字符串中的一些单词。我有两个示例字符串:

string1 = "aaabbb aaa bbb" 
string2 = "a. bbb"

在 string1 中,我想用“ccc”替换完整的单词“aaa”,所以我这样做是对的:

translation = "aaa"
string1.gsub(/\b#{translation}\b/, "ccc") => "aaabbb ccc bbb"

所以它起作用了,我很高兴,但是当我尝试替换“a”时。使用“aaa”它不起作用,它返回 string2。

我也试过这个:

translation = "a."
string2.gsub(translation, "aaa") => "aaa bbb"

但是当我在 string1 上面使用 gsub 时,我得到“cccbbb ccc bbb”。对不起,我的英语不好,但我希望我解释的有点容易理解。感谢所有答案。

最佳答案

尝试

string1.gsub(/\b#{Regexp.escape(translation)}\b/, "ccc")

在正则表达式中 '.' 表示“任何字符”。通过调用 escape,您会将 'a.' 转换为 'a\.',这意味着“a 和句点字符”。


更新
正如@Daniel 在评论中指出的那样,单词边界有一些 subtleties .因此,要使上述内容与 "a." 一起使用,您需要将 \b 替换为前瞻和后视:

    string1.gsub(/(?<!\w)#{Regexp.escape(translation)}(?!\w)/, "ccc")
# => "ccc bbb"

关于Ruby 替换词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23560770/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com