gpt4 book ai didi

javascript - 有效地从字符串中删除常见模式

转载 作者:行者123 更新时间:2023-11-30 12:03:02 25 4
gpt4 key购买 nike

我正在尝试编写一个函数来计算两个字符串表示同一事物的可能性。为了做到这一点,我将转换为小写字母并在比较它们之前从字符串中删除特殊字符。目前我正在使用 String.replace(substring, '') 删除字符串 '.com' 和 'the' 并使用 String.replace(regex, '') 删除特殊字符>

str = str.toLowerCase()
.replace('.com', '')
.replace('the', '')
.replace(/[&\/\\#,+()$~%.'":*?<>{}]/g, '');

是否有更好的正则表达式可用于删除“.com”和“the”等常见模式以及特殊字符?或者其他一些提高效率的方法?

随着我的数据集的增长,我可能会发现其他常见的无意义模式需要在尝试匹配字符串之前删除,并且希望避免链接更多 replace 函数的性能影响。

例子:

炸鱼薯条? =>炸鱼片

stackoverflow.com => 计算器

指环王 => 指环王

最佳答案

您可以使用这样的 rexexp 将替换调用连接到单个调用:

str = str.toLowerCase().replace(/\.com|the|[&\/\\#,+()$~%.'":*?<>{}]/g, '');

要删除的不同字符串在括号 () 内并用竖线分隔 |

这使得向正则表达式添加更多字符串变得足够容易。

如果您将要删除的单词存储在一个数组中,您可以使用 RegExp 构造函数生成正则表达式,例如:

var words = ["\\.com", "the"];
var rex = new RegExp(words.join("|") + "|[&\\/\\\\#,+()$~%.'\":*?<>{}]", "g");

然后为每个字符串重复使用 rex:

str = str.toLowerCase().replace(rex, "");

请注意需要进行额外的转义,因为我们使用的不是正则表达式文字,而是字符串,因此需要转义反斜杠(在 words 数组和最后一位中),如执行 "(因为我使用 " 作为字符串引号)。

关于javascript - 有效地从字符串中删除常见模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36153411/

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