gpt4 book ai didi

java - icu4j 西里尔字母转拉丁字母

转载 作者:搜寻专家 更新时间:2023-10-30 21:25:11 24 4
gpt4 key购买 nike

我正在尝试将西里尔文字变成拉丁语,这样我就可以将它们放在网址中。我用 icu4j音译器,但它仍然给出像这样的奇怪字符:Vilʹândimaa。它应该更像 viljandimaa。当我复制那个 url 时,这些字母变成 %.. 一些无用的东西。

有人知道如何使用 icu4j 将西里尔字母转换为 a-z 吗?

更新

我自己已经无法回答,但发现这个问题非常有帮助:Converting Symbols, Accent Letters to English Alphabet

最佳答案

修改你的identifier做你想做的事。您可以使用带有 Remove 转换的正则表达式去除不需要的字符。

例如,考虑字符串"'Eé математика":

"'E\u00E9 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0430"

标识符 "Any-Latin; NFD; [^\\p{Alnum}] Remove" 将音译为拉丁语(可能仍包含重音),将重音字符分解为字母和变音符号并删除任何不是字母数字的内容。生成的字符串是“Eematematika”

您可以在 General Transforms 下阅读更多关于标识符的信息在 ICU 网站上。


例子:

//import com.ibm.icu.text.Transliterator;
String greek
= "'E\u00E9 \u043c\u0430\u0442\u0435\u043c\u0430\u0442\u0438\u043a\u0430";
String id = "Any-Latin; NFD; [^\\p{Alnum}] Remove";
String latin = Transliterator.getInstance(id)
.transform(greek);
System.out.println(latin);

针对 ICU4J 49.1 进行了测试。

关于java - icu4j 西里尔字母转拉丁字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5818912/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com