[英]Test for multiple words in a string
我有一個像這樣的字符串:
var str = "FacebookExternalHit and some other gibberish";
現在,我有一個字符串列表來測試它們是否存在於str
。 它們是數組格式:
var bots = ["FacebookExternalHit", "LinkedInBot", "TwitterBot", "Baiduspider"];
搜索str
並查看是否存在任何bots
值的最快和/或最短的方法是什么? 如果這是最好的方法,則正則表達式很好。
使用join
您可以執行以下操作:
var m = str.match( new RegExp("\\b(" + bots.join('|') + ")\\b", "ig") );
//=> ["FacebookExternalHit"]
我不知道正則表達式一定是要走的路。 Array.prototype. some()
出Array.prototype. some()
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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.