我需要将由某些特定语言的字母组成的字符串(例如HÄSTDJUR-注意Ä)转换为不带有这些特殊字母的字符串(在这种情况下是HASTDJUR)。要如何在Java中实现?谢谢!
重点并不在于它听起来怎么样。场景如下-您想使用应用程序,但没有瑞典键盘。因此,您可以通过用拉丁字母表中的典型字母替换特殊字母而不是查看字符映射来输入它。
我需要将由某些特定语言的字母组成的字符串(例如HÄSTDJUR-注意Ä)转换为不带有这些特殊字母的字符串(在这种情况下是HASTDJUR)。要如何在Java中实现?谢谢!
重点并不在于它听起来怎么样。场景如下-您想使用应用程序,但没有瑞典键盘。因此,您可以通过用拉丁字母表中的典型字母替换特殊字母而不是查看字符映射来输入它。
我认为你的问题与这个问题相同:
因此答案也是相同的:
String convertedString =
Normalizer
.normalize(input, Normalizer.Form.NFD)
.replaceAll("[^\\p{ASCII}]", "");
请参阅:
final String input = "Tĥïŝ ĩš â fůňķŷ Šťŕĭńġ";
System.out.println(
Normalizer
.normalize(input, Normalizer.Form.NFD)
.replaceAll("[^\\p{ASCII}]", "")
);
输出:
这是一个很酷的字符串
Ä --> A
é --> e
A --> A (exactly the same)
etc...
然后你可以在你的文本上调用你的映射(伪代码):
for letter in string:
newString += map(letter)
实际上,您需要创建一组规则,将字符映射到ASCII等效字符。