Converting Greek to Uppercase in Java
我想做的相当简单:
1 2 |
在希腊语中,只有大写字母的第一个字母应该包含重音字符。
1 2 3 4 5 | // upper contains the following (incorrect) string: // Τ?ΧΙΣΤΗ ΑΛ?ΠΗΞ ΒΑΦ?Σ ΨΗΜ?ΝΗ ΓΗ - MARY HAD A LITTLE LAMB // correct string: // ΤΑΧΙΣΤΗ ΑΛΩΠΗΞ ΒΑΦΗΣ ΨΗΜΕΝΗ ΓΗ - MARY HAD A LITTLE LAMB |
(口音很难看,但它们就在那儿。)
根据Java 1.7文档,我应该能够将区域设置传递给EDCOX1×0,例如:
然而,对于正确处理希腊语的
是否可以为特定区域定义
或者,我可以编写一个实用程序类来处理这个特定的情况。但如果可能的话,我更愿意根据区域设置覆盖这个函数,以防其他语言出现这种情况。
默认情况下,在Java中不支持这一点。我必须创建自己的解决方案。
我尝试了以下方法,似乎奏效了:
1 2 3 4 5 | String example ="Τ?χιστη αλ?πηξ βαφ?? ψημ?νη γη - Mary Had A Little Lamb"; String upper = example.toUpperCase(); String temp = Normalizer.normalize(upper, Normalizer.Form.NFD); Pattern pattern = Pattern.compile("\\p{InCombiningDiacriticalMarks}+"); System.out.println(pattern.matcher(temp).replaceAll("")); |