我有如下所示的数组符号
var sourcesymbols = ["ERT", "UBL" , "AMAZING"];
我从rss feed
获得以下新闻标题你的专家很棒
如何检查rssfeedstring中的内容是否存在于 sourcesymbols 数组下?
例如rssfeedstring有惊人字,它也出现在 sourcesymbols
下请让我知道如何实现这个目标。
我试图将rssfeedstring转换为大写,然后我不确定如何在字符串上使用indexOf。
rssfeedstring = rssfeedstring.toUpperCase();
请让他们知道是否还有更好的方法,因为数组将有2000个符号
答案 0 :(得分:2)
您可以使用正则表达式。
步骤:
join
(正则表达式中的OR)将数组转换为|
的字符串 glue \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);
答案 1 :(得分:0)
尝试使用Array.prototype.map()
,Array.prototype.indexOf()
返回匹配的文字,sourcesymbols
中匹配文字的索引
var sourcesymbols = ["ERT", "UBL" , "AMAZING"];
var mystr = 'you experts are amazing';
var res = mystr.split(" ").map(function(val, index) {
var str = val.toUpperCase(), i = sourcesymbols.indexOf(str);
return i !== -1 ? [val, i] : null
}).filter(Boolean);
console.log(res)
jsfiddle http://jsfiddle.net/955pfz01/6/