我如何才能知道我的String包含变音符号?

Pra*_*mar 8 java character-encoding

例如 -

text = ?eskoslovenská obchodní banka;

text string contains diacritics like ? , á etc.
Run Code Online (Sandbox Code Playgroud)

我想写一个函数,我将传递这个字符串"Č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.
Run Code Online (Sandbox Code Playgroud)

我不知道该怎么做.

Joo*_*gen 11

一条知识:在Unicode中存在一个代码,á但是可以用a a和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);
}
Run Code Online (Sandbox Code Playgroud)


Kep*_*pil 5

正规化类似乎能够做到这一点。一些有限的测试表明

Normalizer.isNormalized(text, Normalizer.Form.NFD)
Run Code Online (Sandbox Code Playgroud)

可能就是您所需要的。