java - 如何发现几乎相同的字符串?

标签 java string

我写了一个方法来帮助匹配代表同一个人但以不同方式书写的名字(全名或简称),例如:

Paul Samuelson-SmithPaul Smith 根据我的方法将被视为相等:

private static boolean equalName(String name_2, String name_1){
        boolean equality1 = true;
        name_1 = name_1.replace("&", " ").replace("-", " ");
        String  []  names1 = name_1.split(" ");
        for (int i = 0; i < names1.length ; i ++) {
            if (!name_2.contains(names1[i])) {equality1 = false; break;}
        }
        boolean equality2 = true;
        name_2 = name_2.replace("&", " ").replace("-", " ");
        String  []  names2 = name_2.split(" ");
        for (int i = 0; i < names2.length ; i ++) {
            if (!name_1.contains(names2[i])) {equality2 = false; break;}
        }
        return equality1 || equality2;
    }

但是我仍然有一个问题,如果名字有错字怎么办,比如说 Paul Samuelson-SmithPaull Smith 是同一个人。我的问题是是否有任何 API 可以帮助解决可能出现的拼写错误?我怎样才能改进我的方法?

最佳答案

Possible duplicate

这是一个内置了一些距离算法的库:http://sourceforge.net/projects/simmetrics/

关于java - 如何发现几乎相同的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19456117/

相关文章:

string - 如何将目录对象转换为字符串 - Powershell

java - 将 JHipster 应用程序部署到 Glassfish 4.1 时出现异常

java - 如何在不使用双引号而不是单引号的情况下打印特定字符串?

c# - 在 C# 中获取 String.indexof 之前/之后的字符串

java - replace ('\0' ,'0' ) 是什么意思?

c# - 如何在C#中标准化外观精美的unicode字符串?

java - 字符串作为池中的对象还是作为引用?

java - 如何复制目录及其子目录、文件和zip文件

java - bouncyCaSTLe 是否提供 TLS 功能?

java - android 登录后如何隐藏 Activity ?