Как я могу узнать, что моя строка содержит диакритические знаки?
Например -
text = Československá obchodní banka;
text string contains diacritics like Č , á etc.
Я хочу написать функцию, где я передам эту строку "Československá obchodní banka" и function will return true if string contains diacritics else false
,
Я должен обрабатывать диакритические знаки и строки, которые содержат символы, которые не попадают в диапазон Az или az отдельно.
1) If String contains diacritics then I have to do some XXXXXX on it.
2) If String contains character other than A-Z or a-z and not contains diacritics then do some other operations YYYYY.
Я понятия не имею, как это сделать.
2 ответа
Решение
Одно знание: в Unicode существует код для á
но тот же результат можно получить с a
и combining mark-'
,
Вы можете использовать java.text.Normalizer следующим образом:
public static boolean hasDiacritics(String s) {
// Decompose any á into a and combining-'.
String s2 = Normalizer.normalize(s, Normalizer.Form.NFD);
return s2.matches("(?s).*\\p{InCombiningDiacriticalMarks}.*");
//return !s2.equals(s);
}
Класс Normalizer, кажется, в состоянии выполнить это. Некоторые ограниченные испытания показывают, что
Normalizer.isNormalized(text, Normalizer.Form.NFD)
может быть то, что вам нужно.