9

例如 -

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.

我不知道该怎么做。

4

2 回答 2

13

一条知识:在 Unicode 中存在一个代码,但使用 an和 aá可能会得到相同的结果。acombining 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);
}
于 2012-07-03T11:16:54.170 回答
5

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

Normalizer.isNormalized(text, Normalizer.Form.NFD)

可能是你需要的。

于 2012-07-03T11:16:24.260 回答