我有如下所示的数组符号

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);

09-13 09:02
查看更多