首页 > 解决方案 > 逆for循环组成搜索字符串

问题描述

我必须检查字符串的某些部分是否包含在更大的字符串中,即用于文本搜索,例如:

let search = "Joe is a good boy"
let text = "One of the better boys is Joe"

如何查看整个字符串或其中的一部分是否包含在文本中?我试图search.split()寻找每个拆分的字符串,但这并不好:我想至少搜索“Joe”、“Joe is”、“Joee is a”等字符串是否存在部分匹配。

你能建议我做任何功能吗?

标签: javascriptsearchfull-text-search

解决方案


要检查常用词,您可以将两个字符串转换为词集并计算这些集的交集。

let search = "Joe is a good boy"
let text = "One of the better boys is Joe"


let words = str => new Set(str.split(/\s+/g))

let intersection = (a, b) => [...a].filter(x => b.has(x))

console.log(intersection(words(text), words(search)))

如果您正在寻找LCS,请参阅重复的线程。


推荐阅读