【问题标题】:Converting String which contains Turkish characters to lowercase将包含土耳其字符的字符串转换为小写
【发布时间】:2016-06-06 11:23:03
【问题描述】:
我想将包含土耳其语字符的字符串转换为小写,并将土耳其语字符映射为英语等效项,即"İĞŞÇ" -> "igsc"。
当我使用toLowerCase(new Locale("en", "US")) 函数时,它会将İ 转换为i,但带有点。
我该如何解决这个问题? (我使用的是 Java 7)
谢谢。
【问题讨论】:
-
-
欢迎来到 Stack Overflow!请拨打tour 并阅读How to Ask 以了解我们对这里问题的期望。请注意,我们不提供从头开始的编码服务。请告诉我们您已经尝试过什么,它是如何失败的,我们或许可以提供帮助。
标签:
java
string
lowercase
【解决方案1】:
你可以
1) 首先,去除重音:
以下内容来自该主题:
Is there a way to get rid of accents and convert a whole string to regular letters?:
使用 java.text.Normalizer 为您处理。
string = Normalizer.normalize(string, Normalizer.Form.NFD);
这会将所有重音符号与字符分开。然后,
你只需要将每个字符与一个字母进行比较
扔掉那些不是的。
string = string.replaceAll("[^\\p{ASCII}]", "");
如果你的文本是 unicode,你应该改用这个:
string = string.replaceAll("\\p{M}", "");
对于 unicode,\P{M} 匹配基本字形和 \p{M}(小写)
匹配每个口音。
2) 然后,把剩下的String改成小写
string = string.toLowerCase();
【解决方案2】:
String testString = "İĞŞÇ";
System.out.println(testString);
Locale trlocale = new Locale("tr-TR");
testString = testString .toLowerCase(trlocale);
System.out.println(testString);
像魅力一样工作:)