【问题标题】:How do I roughy match two strings in Javascript?我如何粗略地匹配 Javascript 中的两个字符串?
【发布时间】:2019-05-09 09:27:11
【问题描述】:

假设我有这个字符串:

const string1 = "Qualification Level"

..我想将它与一些具有“大致”相同值或至少包含一些相似之处的不同字符串进行比较:

const string2 = "Qualification" // just one of the words
const string3 = "level" // just one of the words and lowercase
const string4 = "qualification level" // lowercase

最好使用什么算法/正则表达式,以便将string1 与我提到的任何字符串进行比较将返回true

【问题讨论】:

  • 要匹配的单词范围是多少?
  • 我不知道这个问题是否属于这里,但这听起来像是一些启发式选择问题。也许两个字符串都小写,然后使用最长公共子序列算法,然后可能除以较长字符串的长度得到“相似度%”?
  • 在google上搜索“字符串相似度算法”似乎有不少命中
  • string1.toLowerCase().includes(search.toLowerCase()) ?适用于您提到的所有三个示例搜索文本

标签: javascript regex string algorithm


【解决方案1】:

您可以使用多种字符串或语音相似度算法。例如:

根据您想要做什么,这些甚至都不是必需的。只需将所有字符串小写并将其拆分为单个单词即可。然后用Array#includes检查string1中是否包含某个词。

【讨论】:

  • 虽然此链接可能会回答问题,但最好在此处包含答案的基本部分并提供链接以供参考。如果链接页面发生更改,仅链接答案可能会失效。 - From Review
  • @Ankh 这些链接要么指向维基百科上的文章,要么指向可能的算法实现。维基百科不会去任何地方,我也不会在这里复制实现,因为如果源代码发生变化,它们可能会过时。
【解决方案2】:

string.match() 是 JavaScript 中的一个内置函数,用于在字符串中搜索任何正则表达式的匹配项,如果找到匹配项,则将匹配项作为数组返回。 语法:

stirng.match(regExp)

示例:

输入:

var string = Welcome to geeks for geeks!
document.write(string.match(/eek/g);

输出:

eek, eek

这里的“g”标志表示应该针对字符串中所有可能的匹配项测试正则表达式。

【讨论】:

    猜你喜欢
    • 2022-11-17
    • 1970-01-01
    • 1970-01-01
    • 2020-07-24
    • 2020-08-10
    • 1970-01-01
    • 2019-12-01
    • 1970-01-01
    • 2023-03-11
    相关资源
    最近更新 更多