将 Java String 转换为 ascii

2022-09-01 21:48:29

我需要将由某些语言(如HÄSTDJUR - note Ä)特定的一些字母组成的s转换为没有这些特殊字母的a(在本例中为HASTDJUR)。我该如何在Java中做到这一点?感谢您的帮助!StringString


这与它听起来如何无关。场景如下 - 您想要使用该应用程序,但没有瑞典语键盘。因此,您无需查看字符映射表,而是通过将特殊字母替换为拉丁字母表中的典型字母来键入它。


答案 1

我认为您的问题与此问题相同:

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}]", "")
);

输出:

这是一个时髦的字符串


答案 2

我建议将特殊字符映射到您想要的字符。

Ä --> A
é --> e
A --> A (exactly the same)
etc...

然后,您可以对文本(在伪代码中)调用映射:

for letter in string:
   newString += map(letter)

实际上,您需要为哪些字符映射到 ASCII 等效项创建一组规则。


推荐