Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何将非英语字符与重音进行比较_Java_Special Characters_String Comparison - Fatal编程技术网

Java 如何将非英语字符与重音进行比较

Java 如何将非英语字符与重音进行比较,java,special-characters,string-comparison,Java,Special Characters,String Comparison,我想比较两个字符串,其中有一些非英语字符 String1 = debarquer String2 = débárquér 在比较以上两个字符串时,它们应该表示相等。使用Collator类。它允许您设置强度和区域设置,并适当地比较字符 if (string1 != null){ if (string1.equals(string2)){ System.out.println("Equal"); } else{ System.out.println("Not Equal"); } 它应该与此类似

我想比较两个字符串,其中有一些非英语字符

String1 = debarquer
String2 = débárquér

在比较以上两个字符串时,它们应该表示相等。

使用Collator类。它允许您设置强度和区域设置,并适当地比较字符

if (string1 != null){
if (string1.equals(string2)){
System.out.println("Equal");
}
else{
System.out.println("Not Equal");
}
它应该与此类似(注意:我没有测试该程序)


更新:需要注意的一点是,“débárquér”和“debarquer”永远不应该被认为是平等的。但是,如果要对它们进行排序,则不希望根据它们的ASCII值对它们进行比较。以“Joao”和“João”为例:如果您根据ASCII对它们进行排序,您可能会得到Joao、John、João。这显然不好。使用collator类可以正确地处理这个问题。

有一种方法可以比较java中的两个字符串值

        if(String1.equals(String2))
        {
           System.out.println("Equal");
        }
        else
        {
           System.out.println("Not equal");
        }

为此,可以使用Java的类。只需规范化字符串,然后去掉变音符号,如下所示:

String stripAccents(String string) {
    string = Normalizer.normalize(string, Normalizer.Form.NFD);
    string = string.replaceAll("\\p{InCombiningDiacriticalMarks}+", "");
}
然后,您可以使用它来比较两个字符串减去重音:

stripAccents(string1).equals(stripAccents(string2))

如果
字符串中包含非ascii值,请不要担心。您应该使用
s1.equals(s2)
来比较它们,假设两者都是
String
s并且没有
null
值。
if(String1.equals(String2)){/*do something*/}
我倾向于使用
equals
方法比较西班牙语中的
String
,没有问题。最大的区别是什么?
stripAccents(string1).equals(stripAccents(string2))