Chcę dopasować małą literę "I" języka angielskiego (i) do małej litery "İ" języka tureckiego (i). Są one tym samym glifem, ale nie pasują do siebie. Kiedy robię System.out.println("İ".toLowerCase());
, drukowany jest znak i oraz kropka (strona ta nie wyświetla się poprawnie)Jak dopasować "i" do tureckiego w java?
Czy istnieje sposób na ich dopasowanie? (Najlepiej bez twardego kodowania) Chcę, aby program pasował do tego samego glify niezwiązane z językiem i kodem utf. czy to możliwe?
Testowałem normalizację bez powodzenia.
public static void main(String... a) {
String iTurkish = "\u0130";//"İ";
String iEnglish = "I";
prin(iTurkish);
prin(iEnglish);
}
private static void prin(String s) {
System.out.print(s);
System.out.print(" - Normalized : " + Normalizer.normalize(s, Normalizer.Form.NFD));
System.out.print(" - lower case: " + s.toLowerCase());
System.out.print(" - Lower case Normalized : " + Normalizer.normalize(s.toLowerCase(), Normalizer.Form.NFD));
System.out.println();
}
Wynik nie jest właściwie pokazano na miejscu, ale pierwsza linia (iTurkish) nadal ma ̇
pobliżu małej litery i.
Cel i problem
To będzie multi słownik językowy. Chcę, aby program mógł rozpoznać, że "İFEL" zaczyna się od "if". Aby upewnić się, że nie są one wrażliwe na wielkość liter, najpierw konwertuję oba teksty na małe litery. İFEL staje I (dot) Fel i „jeśli” nie jest rozpoznawana jako jego części
Obie litery nie są takie same kod uni więc nie pasuje. – Zelldon
Możesz usunąć znaki diakrytyczne z ciągu znaków za pomocą [commons-lang] (https://commons.apache.org/proper/commons-lang/): org.apache.commons.lang3.StringUtils.stripAccents (String) – agad
@agad Wouldn to zapobiega różnicowaniu się od ı? Rozważałbym to, jeśli nie ma sposobu, aby to zrobić. – WVrock