【问题标题】:Converting String which contains Turkish characters to lowercase将包含土耳其字符的字符串转换为小写
【发布时间】:2016-06-06 11:23:03
【问题描述】:

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

当我使用toLowerCase(new Locale("en", "US")) 函数时,它会将İ 转换为i,但带有点。

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

谢谢。

【问题讨论】:

标签: 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);
    

    像魅力一样工作:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-09
      • 2021-11-23
      • 2014-06-24
      • 1970-01-01
      • 1970-01-01
      • 2020-10-02
      • 2012-05-13
      相关资源
      最近更新 更多