Jeśli porównywane łańcuchy zawierają uzupełniające znaki Unicode (można ich używać tylko dla łańcuchów znormalizowanych):
Użyj narzędzia ICU 2.6.1
-
com.ibm.icu.text.UTF16.StringComparator
(Object,
Object)
-
com.ibm.icu.text.UTF16.StringComparator
(String,
String)
public static void main( String[] args) {
String str = "\uFF10";
String str2 = "\uD800\uDC00";
UTF16.StringComparator compare = new UTF16.StringComparator(true, false, UTF16.StringComparator.FOLD_CASE_DEFAULT);
int result = compare.compare(str, str2);
System.out.println("UTF16.StringComparator: Wynik = " + result);
str = "\ud801\udc00";
str2 = "\ud801\udc28";
UTF16.StringComparator compare2 = new UTF16.StringComparator(true, true, UTF16.StringComparator.FOLD_CASE_DEFAULT);
result = compare2.compare(str, str2);
System.out.println("UTF16.StringComparator: Wynik (ignoruj wielkość liter) = " + result);
}
|
|
Jeśli wynik porównania zależy od ustawień narodowych lub łańcuch nie jest znormalizowany i potrzebne są usługi porządkowania, użyj metody
-
java.text.Collator.compare
(Object,
Object)
-
java.text.Collator.compare
(String,
String)
public static void main(String[] args){
Collator collator = Collator.getInstance(new Locale("lt", "LT"));
String str = "k";
String str2 = "y";
int result = collator.compare(str, str2);
System.out.println("Collator: Wynik (ustawienia narodowe) = " + result);
}
|
|