【问题标题】:Compare words in strings比较字符串中的单词
【发布时间】:2016-06-10 14:53:27
【问题描述】:
我正在尝试比较字符串中的单词。这就是我想要做的:
var string1 = "Action, Adventure, Comedy";
var string2 = "Action Horror";
if (string1 have a word from string 2 == true)
{
alert("found!");
}
我尝试过 match(),但在我的情况下,它会尝试查找“Action Horror”而不是“Action”和“Horror”字样。
【问题讨论】:
标签:
javascript
jquery
compare
match
【解决方案1】:
您可以使用 match() 和 reduce()
执行类似的操作
var string1 = "Action, Adventure, Comedy";
var string2 = "action Horror";
var strArr = string1.match(/\b\w+?\b/g)
//getting all words from string one
.map(function(v) {
return v.toLowerCase();
});
//converting strings to lower case for ignoring case
var res = string2.match(/\b\w+?\b/g)
// getting words from second string
.reduce(function(a, b) {
return a || strArr.indexOf(b.toLowerCase()) != -1;
//checking string in first word array
}, false);
// also set initial value as false since no strings are matched now
console.log(res);
或者
var string1 = "Action, Adventure, Comedy";
var string2 = "action Horror";
var res = string2.match(/\b\w+?\b/g)
// getting words from second string
.reduce(function(a, b) {
return a || new RegExp('\\b' + b + '\\b', 'i').test(string1);
//checking string in first string
}, false);
// also set initial value as false since no strings are matched now
console.log(res);
参考:JavaScript/jQuery - How to check if a string contain specific words
【解决方案3】:
声明两个集合:
var Set set1,ser2;
将string1复制到set1,将string2复制到set2
(不知道该怎么做)。然后有:
var intersection = new Set([x for (x of set1) if (set2.has(x))]);
if intersection.prototype.size>0
两个字符串(和集合)都有一些共同的词。