javascript - 如何匹配原始字符串中的字符串?
问题描述
我想匹配来自原始字符串的字符串
例如:
假设原始字符串是
"THE QUICK BROWN FOX JUMPS OVER A LAZY DOG."
,另一个字符串是
"QUICK OVER A DOG"
所以如果原始字符串中存在上述字符串的单词,那么它应该返回 true。我怎样才能做到这一点 ?
我已经使用了这种方法indexOf(filter) > -1
,它只有在我给出像
“BROWN FOX”
这样的连续字符串时才有效,但是如果我将“BROWN JUMPS”作为字符串给出,那么它就不起作用了。
var string_1 = "QUICK BROWN";
var string_2 = "QUICK FOX";
// this returns true
if (original.toUpperCase().indexOf(string_1) > -1) {
console.log("true");
} else {
console.log("false");
}
// this returns false
if (original.toUpperCase().indexOf(string_2) > -1) {
console.log("true");
} else {
console.log("false");
}
那么如何匹配原始字符串中的字符串?
解决方案
我将匹配两个字符串中的所有单词字符,以获取单词数组,并将原始字符串的单词(要搜索的单词)放入一个集合中。然后检查.every
Set中是否存在其他单词之一:
const orig = "THE QUICK BROWN FOX JUMPS OVER A LAZY DOG.";
// if the strings may not have any words in them at all,
// then alternate with the empty array, since the match will be null:
const origWordsSet = new Set(orig.match(/\w+/g) || []);
const verify = str => (str.match(/\w+/g) || []).every(word => origWordsSet.has(word));
console.log(
verify("QUICK OVER A DOG"),
verify("QUICK BROWN"),
verify("QUICK FOX"),
verify("FOO")
);
推荐阅读
- ruby - 如何在 MacOS 上使用 rbenv 设置 Ruby 的版本?
- sql - 动态查询所有符合条件的SQL表
- ms-access - [MS ACCESS]根据其他列的内容生成结果列?
- c# - 在 asp.net 中打开一个弹出窗口而不显示页面的 url
- apache-nifi - 如何在 ApacheNifi 中使用 ExtractGrok 处理器获取多行?
- haskell - 如何使用 yesod-persistent 创建单列列表?
- javascript - 使用解构将新属性分配给对象
- python - Python C 扩展 - 如何将 Python 字符串映射到 C 宏常量?
- c# - 动态构建 URL,但它是自动编码的
- javascript - 使用 document.querySelector()