如何将拉丁语unicode字符替换为[az]字符

naf*_*fas 7 java regex string unicode normalization

我正在尝试将所有拉丁语unicode字符转换为它们的[a-z]表示形式

ó --> o
í --> i
Run Code Online (Sandbox Code Playgroud)

我可以轻松地逐一进行,例如:

myString = myString.replaceAll("ó","o");
Run Code Online (Sandbox Code Playgroud)

但由于存在大量的变化,这种方法是不切实际的

有没有其他方式在Java中这样做?例如a regular Expression或autility library

使用案例:

1-城市名称从其他语言到英语,例如

EspíritoSanto - > Espirito Santo,

Epi*_*rce 11

这个答案需要Java 1.6或更高版本,它添加了java.text.Normalizer.

    String normalized = Normalizer.normalize(input, Normalizer.Form.NFD);
    String accentRemoved = normalized.replaceAll("\\p{InCombiningDiacriticalMarks}+", "");
Run Code Online (Sandbox Code Playgroud)

例:

public class Main {
    public static void main(String[] args) {
        String input = "Árvízt?r? tükörfúrógép";
        System.out.println("Input: " + input);
        String normalized = Normalizer.normalize(input, Normalizer.Form.NFD);
        System.out.println("Normalized: " + normalized);
        String accentRemoved = normalized.replaceAll("\\p{InCombiningDiacriticalMarks}+", "");
        System.out.println("Result: " + accentRemoved);
    }
}
Run Code Online (Sandbox Code Playgroud)

结果:

Input: Árvízt?r? tükörfúrógép
Result: Arvizturo tukorfurogep
Run Code Online (Sandbox Code Playgroud)

  • 我不知道这个类是核心java的一部分.谢谢你的启发! (2认同)