Java中的相似性字符串比较我想比较几个字符串,找到最相似的字符串。我想知道是否有任何库,方法或最佳实践会返回我哪些字符串更类似于其他字符串。例如:“快狐跳了起来” - >“狐狸跳了”“快速狐狸跳了” - >“狐狸”这种比较将返回第一个比第二个更相似。我想我需要一些方法,例如:double similarityIndex(String s1, String s2)某处有这样的事吗?编辑:我为什么这样做?我正在编写一个脚本,将MS Project文件的输出与处理任务的某些遗留系统的输出进行比较。由于遗留系统的字段宽度非常有限,因此在添加值时,将缩写描述。我想要一些半自动的方式来查找MS Project中哪些条目与系统上的条目类似,这样我就可以获得生成的密钥。它有缺点,因为它必须仍然手动检查,但它会节省大量的工作
3 回答

肥皂起泡泡
TA贡献1829条经验 获得超6个赞
我将Levenshtein距离算法翻译成了JavaScript:
String.prototype.LevenshteinDistance = function (s2) { var array = new Array(this.length + 1); for (var i = 0; i < this.length + 1; i++) array[i] = new Array(s2.length + 1); for (var i = 0; i < this.length + 1; i++) array[i][0] = i; for (var j = 0; j < s2.length + 1; j++) array[0][j] = j; for (var i = 1; i < this.length + 1; i++) { for (var j = 1; j < s2.length + 1; j++) { if (this[i - 1] == s2[j - 1]) array[i][j] = array[i - 1][j - 1]; else { array[i][j] = Math.min(array[i][j - 1] + 1, array[i - 1][j] + 1); array[i][j] = Math.min(array[i][j], array[i - 1][j - 1] + 1); } } } return array[this.length][s2.length];};
添加回答
举报
0/150
提交
取消