java - java中比较两个字符串以忽略大小写和特殊字符?

标签 java arrays replaceall

    String s1 = "Madam,I'm Adam";
    String s2 = "madam i m adam";
    String str = s1.replaceAll("-,' "," ");
    System.out.println(str.equalsIgnoreCase(s2));    //  false 

如何使 s1 和 s2 相等?

最佳答案

使用正则表达式过滤字符串,例如[^\\w\\d\\s] - 不是字符,不是数字,不是空格:

public static void main(String[] args) {
    String s1 = "Madam,I'm Adam";
    String s2 = "madam i m adam";
    System.out.printf("  -> %s\n", normalizedEquals(s1, s2));    //  false     
}

static String normalize(String s) {
    // here goes normalization
    return s.replaceAll("[^\\w\\d\\s]", " ");
}

static boolean normalizedEquals(String s1, String s2) {
    s1 = normalize(s1);
    s2 = normalize(s2);
    System.out.printf("  -> %s\n  -> %s\n", s1, s2);
    return s1.equalsIgnoreCase(s2);
}

输出:

-> Madam I m Adam
-> madam i m adam
-> true

关于java - java中比较两个字符串以忽略大小写和特殊字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34590860/

相关文章:

javascript 带条件的多维数组中的数组值求和

javascript - 为什么我的基于 reduce 的平均函数返回 NaN?

java - 使用正则表达式屏蔽字符串的一部分

java - 如何以方形对齐单选组项目

java - 使用 rmi 时的编码问题

java - Jooq嵌套选择

java - 正则表达式用一个破折号替换 2 个或多个破折号

java - PrePersist、自定义生成器或服务层中的 Spring JPA/Hibernate 复合 key 生成?

javascript - 将函数参数添加到空数组中

java - Java 中正则表达式的奇怪行为