我有如下所示的数组符号
var sourcesymbols = ["ERT", "UBL" , "AMAZING"];
我从rss feed获得以下新闻标题
您的专家很棒
如何检查rssfeedstring中存在的内容是否在sourcesymbols数组下?
例如,rssfeedstring的单词令人惊讶,它也出现在sourcesymbols下
请让我知道如何实现这个目标。
我试图将rssfeedstring转换为大写,然后我不确定如何在字符串上使用indexOf。
rssfeedstring = rssfeedstring.toUpperCase();
请让他们知道是否还有更好的方法可以执行此操作,因为该数组将包含2000个符号
http://jsfiddle.net/955pfz01/3/
最佳答案
您可以使用正则表达式。
脚步:
使用join
(正则表达式中的OR)作为粘胶,使用|
将数组转换为字符串
使用\b
-单词边界匹配精确的单词
不论大小写,都在正则表达式上使用i
标志进行匹配。因此,不必更改字符串的大小写。
使用RegExp
构造函数转义斜线需要传递字符串,并且字符串中的\
用作转义后跟字符。
可以在正则表达式上使用test
来检查字符串是否通过了正则表达式。
var sourcesymbols = ["ERT", "UBL", "AMAZING"];
var mystr = 'you experts are amazing';
var regex = new RegExp("\\b(" + sourcesymbols.join('|') + ")\\b", 'i'); // /\b(ERT|UBL|AMAZING)\b/i
alert(regex.test(mystr));
您也可以使用some
通过将
split
与\s+
一起使用,可以将字符串转换为数组。这将按任意(空格,制表符等)一个或多个空格字符分割字符串在拆分数组上使用
some
将字符串转换为大写以进行比较
使用
indexOf
检查元素是否存在于数组中var mystr = 'you experts are amazing';
var sourcesymbols = ["ERT", "UBL", "AMAZING"];
var present = mystr.toUpperCase().split(/\s+/).some(function(e) {
return sourcesymbols.indexOf(e) > -1;
});
alert(present);