如何检查两个字符串是否大致相等?

我正在为一个游戏做一个聊天响应者,我想知道是否有一种方法可以比较两个字符串,看看它们是否相近于彼此,例如:

如果有人输入:“力量等级?” 它会做一个函数..然后如果有人输入:“Str level?” 它会做同样的function,但我想要它,以便如果有人做了一个拼写错误或类似的东西,它会自动检测他们试图输入的内容,例如:“强度tlevel?” 也会让函数被调用。

我在这里问的是一些简单的东西,还是需要我做一个巨大的刺激性function来检查字符串?

如果你对我的解释感到困惑(不是我的强项之一)那么这基本上就是我的要求。

如何检查两个字符串是否彼此相似?

看到这个问题和答案: 获得最接近的字符串匹配

使用一些启发式算法和Levenshtein距离算法,您可以计算两个字符串的相似性,并猜测它们是否相等。

在此处输入图像描述

除此之外,您唯一的选择是与您正在寻找的类似的词语。

你可以使用Levenshtein距离 。

我相信您应该使用编辑距离算法之一来解决您的问题。 这是例如java中的Levenstein距离算法实现。 您可以使用它来比较句子中的单词,如果它们的编辑距离之和小于例如句子长度的10%,则认为它们等于。

也许你需要的是一个用于相似单词和常见拼写错误的大型字典,您可以使用它来将每个单词“翻译”为一个单独的条目或键。

这对于自定义单词很有用,因此您可以在与“strength”相同的键中添加“str”。

但是,您也可以制作一些自动方法,即在字典中找不到您的单词时,递归循环1个字母的差异(丢失或替换)并可以递归到更深层次,即2个丢失的字母等。

如果你想找到类似的单词开头,你可以使用一个词干分析器。 Stemmers将单词缩减为共同的开头。 最着名的算法如果是Port Stemmer( http://tartarus.org/~martin/PorterStemmer )。

如上所述,Levenshtein是伟大的,但对于大于一或两的距离,计算量很大。