测试字符串中的多个单词

Test for multiple words in a string

本文关键字:单词 字符串 测试      更新时间:2023-09-26

我有一个这样的字符串:

var str = "FacebookExternalHit and some other gibberish";

现在我有一个字符串列表来测试它们是否存在于str中。以下是数组格式:

var bots = ["FacebookExternalHit", "LinkedInBot", "TwitterBot", "Baiduspider"];

搜索str并查看是否存在任何bots值的最快和/或最短方法是什么?Regex是好的,如果这是最好的方法。

使用join可以执行:

var m = str.match( new RegExp("''b(" + bots.join('|') + ")''b", "ig") );
//=> ["FacebookExternalHit"]

我不知道regex一定是实现这一目标的方法。查看Array.prototype.some()

var str = "FacebookExternalHit and some other gibberish";
var bots = ["FacebookExternalHit", "LinkedInBot", "TwitterBot", "Baiduspider"];
var isBot = bots.some(function(botName) {
  return str.indexOf(botName) !== -1;
});
console.log("isBot: %o", isBot);

常规的for循环甚至更快:

var str = "FacebookExternalHit and some other gibberish";
var bots = ["FacebookExternalHit", "LinkedInBot", "TwitterBot", "Baiduspider"];
var isBot = false;
for (var i = 0, ln = bots.length; i < ln; i++) {
  if (str.indexOf(bots[i]) !== -1) {
    isBot = true;
    break;
  }
}
console.log("isBot: %o", isBot);