Как я могу узнать, что моя строка содержит диакритические знаки?

Например -

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)

может быть то, что вам нужно.

Другие вопросы по тегам