将包含土耳其语字符的String转换为小写

时间:2016-02-24 09:04:20

标签: java string lowercase

我想将包含土耳其字符的字符串转换为小写字母,土耳其字符映射到英语等价物,即"İĞŞÇ" - > "igsc"

当我使用toLowerCase(new Locale("en", "US"))功能时,它会将İ转换为i,但会点缀。

我该如何解决这个问题? (我使用的是Java 7)

谢谢。

2 个答案:

答案 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);

像魅力一样工作:)