我想将包含土耳其字符的字符串转换为小写字母,土耳其字符映射到英语等价物,即"İĞŞÇ"
- > "igsc"
。
当我使用toLowerCase(new Locale("en", "US"))
功能时,它会将İ
转换为i
,但会点缀。
我该如何解决这个问题? (我使用的是Java 7)
谢谢。
答案 0 :(得分:11)
你可以
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();
答案 1 :(得分:1)
String testString = "İĞŞÇ";
System.out.println(testString);
Locale trlocale = new Locale("tr-TR");
testString = testString .toLowerCase(trlocale);
System.out.println(testString);
像魅力一样工作:)