gpt4 book ai didi

java - 如何比较字符串同时忽略特定字符

转载 作者:行者123 更新时间:2023-12-02 09:54:08 24 4
gpt4 key购买 nike

我知道有类似的线程,但其中大多数只涉及忽略空格。

我必须使用一些写得不好的数据表来编写应用程序,所以我经常必须比较这样的东西:包,包,包,包,包

这些都应该被认为是平等的,因为它们都是一个包。然而,制作这些数据表的人都没有相互交流,所以现在我要处理它。

如何在比较字符串时忽略括号、空格、“s”字符,并确保在比较之前所有内容均为小写?

我现在所拥有的就是这个:

private boolean sCompare(String s1, String s2)
{


return s1.equalsIgnoreCase(s2)
}

显然它并不多,除了直接比较两个小写字符串之外没有做任何事情,但我不确定获得我需要的结果的正确方法。

对于上面的示例,新的比较函数应返回 true,而在比较 Pack(s) 和 Case(s)、Packs 和 Case(s) 等时返回 false。

编辑使用最佳答案的帮助,我创建了一个适合我的需求的函数

private boolean sCompare(String s1, String s2)
{
String rx = "[\\se(s)|s$]";
return (s1.toLowerCase().replaceAll(rx,"")).equals(s2.toLowerCase().replaceAll(rx,""));
}

最佳答案

这个:

public static void main(String[] args) throws Exception {
String REGEX = "\\(s\\)|s$";

System.out.println("Packs".replaceAll(REGEX, "")
.toLowerCase());
System.out.println("packs".replaceAll(REGEX, "")
.toLowerCase());
System.out.println("Pack(s)".replaceAll(REGEX, "")
.toLowerCase());
System.out.println("pack(s)".replaceAll(REGEX, "")
.toLowerCase());
System.out.println("pack".replaceAll(REGEX, "")
.toLowerCase());
}

产量:

pack
pack
pack
pack
pack

所以这应该可以做到:

private static boolean sCompare(String s1, String s2) {
return discombobulate(s1).equals(discombobulate(s2));
}

private static String discombobulate(String s) {
String REGEX = "\\(s\\)|s$";

return s.replaceAll(REGEX, "")
.toLowerCase();
}

关于java - 如何比较字符串同时忽略特定字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56120727/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com