gpt4 book ai didi

regex - vbscript 中检查字符串是否包含多个单词/短语列表中的单词/短语的最快方法

转载 作者:行者123 更新时间:2023-12-01 22:04:01 24 4
gpt4 key购买 nike

我正在实现一个功能,用于根据禁止单词/短语的(可能很长)列表检查简介(例如消息/论坛帖子等),并且如果任何一个或多个单词是,则简单地返回 true在简介中找到,如果没有则为 false。

这将在 vbScript 中完成。

老开发人员目前使用 instr() 的 IF 语句非常大,例如

    If  instr(ucase(contactname), "KORS") > 0 OR _ 
instr(ucase(contactname), "D&G") > 0 OR _
instr(ucase(contactname), "DOLCE") > 0 OR _
instr(ucase(contactname), "GABBANA") > 0 OR _
instr(ucase(contactname), "TIFFANY") > 0 OR _
'...
Then

我正在尝试在两种解决方案之间做出决定来替换上述代码:

  1. 使用正则表达式查找匹配项,其中正则表达式将是一个简单(但可能很长)的正则表达式,如下所示:"KORS|D&G|DOLCE|GABBANA|TIFFANY" 等等,我们如果找到任何一个或多个单词,将执行正则表达式测试以返回 true。
  2. 使用一个数组,其中每个数组项都包含一个禁用单词,并循环遍历每个数组项,根据简介检查它。一旦找到匹配,循环就会终止,并且变量将被设置为 TRUE,等等。

在我看来,正则表达式选项是最好的,因为它是一个“检查”,例如宣传语与模式进行了测试。但我想知道可能很长的正则表达式模式是否会增加足够的处理开销,从而抵消在数组循环场景中进行一次“检查”与多次“检查”的简单性和好处?

我也愿意接受我可能忽略的其他选项。

提前致谢。

编辑 - 澄清一下,这是针对一个“blurb”的单一测试,例如针对禁用单词列表的评论、论坛帖子等。它仅在 Web 请求期间运行一次。基准测试应该测试单词列表的大小,而不是用例的执行次数。

最佳答案

您可以创建一个包含所有单词的字符串。用分隔符包围每个单词。

Const TEST_WORDS = "|KORS|D&G|DOLCE|GABBANA|TIFFANY|"

然后,测试您的单词(加上分隔符)是否包含在该字符串中:

If InStr(1, TEST_WORDS, "|" & contactname & "|", vbTextCompare) > 0 Then
' Found word
End If

不需要数组循环或正则表达式。

关于regex - vbscript 中检查字符串是否包含多个单词/短语列表中的单词/短语的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23954454/

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