原则上这个问题可以解决与语言无关的问题,但具体来说我正在寻找一个Javascript实现.
是否有任何库可以让我测量两个字符串的"相同性"?更一般地说,有没有任何算法可以实现这一点,我可以实现(在Javascript中)?
以下面的字符串为例
地球下地幔中自旋跃迁中单晶镁碳化物的异常弹性
并且还要考虑以下,略微调整的字符串.请注意不同的粗体部分
在Sart - Transition的Eart hs下Mant le中,Sin gle Cry stal Magne sio-Sid erite的异常弹性.
Javascript的本机相等运算符不会告诉你很多关于这些字符串之间的关系.在这种特殊情况下,您可以使用正则表达式匹配字符串,但一般情况下只有在您知道期望的差异时才有效.如果输入字符串是随机的,则此方法的一般性会很快崩溃.
方法......我可以想象编写一个算法,将输入字符串拆分为任意数量N
的子串,然后将目标字符串与所有这些子字符串进行匹配,并使用匹配量作为相同度的度量.但这感觉就像一个没有吸引力的方法,我甚至不想考虑O将依赖多大N
.
在我看来,这种算法中有很多自由参数.例如,字符的区分大小写是否应该对测量的贡献与字符的顺序保存相同/更多/更少,似乎是设计者可以做出的任意选择,即:
identicality("Abxy", "bAxy")
与identicality("Abxy", "aBxy")
更具体地定义需求...... 第一个例子是我可以使用它的场景.我正在加载一堆字符串(学术论文的标题),我检查我的数据库中是否有它们.但是,源可能包含拼写错误,约定,错误等等的差异,这使匹配变得困难.在这个特定场景中,可能有一种更简单的方法来匹配标题:因为你可以预期可能出现的问题,这可以让你写下一些正则表达式的野兽.