为了账号安全,请及时绑定邮箱和手机立即绑定

Java中的相似性字符串比较

Java中的相似性字符串比较

慕村225694 2019-07-25 19:00:23
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];};


查看完整回答
反对 回复 2019-07-25
  • 3 回答
  • 0 关注
  • 732 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号