Mon*_*ons 15 java special-characters string-comparison
我想比较其中有两个非英文字符的字符串
String1 = debarquer
String2 = débárquér
Run Code Online (Sandbox Code Playgroud)
在比较上面两个字符串时,他们应该说相等.
Fra*_*ine 23
使用Collator类.它允许您设置强度和区域设置,它将适当地比较字符.
它应该是类似的东西(注意:我没有测试过该程序)
import java.text.Collator;
import java.util.Locale;
public class CollatorExp {
public static void main(String[] args) {
Collator collator = Collator.getInstance(Locale.FRENCH);
collator.setStrength(Collator.PRIMARY);
if (collator.compare("débárquér", "debarquer") == 0) {
System.out.println("Both Strings are equal");
} else {
System.out.println("Both Strings are not equal");
}
}
}
Run Code Online (Sandbox Code Playgroud)
更新:值得注意的是,"débárquér"和"debarquer"永远不应被视为平等.但是如果你要对它们进行排序,那么你不希望它们根据它们的ASCII值进行比较.以"Joao"和"João"为例:如果你根据ASCII对它们进行排序,你可能会得到Joao,John,João.这显然不太好.使用collator类可以正确处理.
Ale*_*ing 11
为此,您可以使用Java的Normalizer类.只需将字符串规范化,然后删除变音标记,如下所示:
String stripAccents(String string) {
string = Normalizer.normalize(string, Normalizer.Form.NFD);
string = string.replaceAll("\\p{InCombiningDiacriticalMarks}+", "");
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以使用它来比较两个字符串减去重音:
stripAccents(string1).equals(stripAccents(string2))
Run Code Online (Sandbox Code Playgroud)
god*_*000 -2
if (string1 != null){
if (string1.equals(string2)){
System.out.println("Equal");
}
else{
System.out.println("Not Equal");
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7730 次 |
| 最近记录: |