我需要做一些相当简单的事情,但不希望使用哈希映射硬编码。
我有一个字符串 s,它是用西里尔字母写的。我需要一些示例来说明如何使用自定义过滤器将其转换为拉丁字符(为了避免混淆,给出一个纯拉丁文的示例。如果字符串 s = 'sniff',我想将它们查找并更改为其他内容(可能还有组合)。
我可以看到 ICU4j 可以做到这种事情,但我不知道如何实现,因为我找不到任何可行的示例(或者说我太蠢了)。
任何帮助都将不胜感激。
谢谢。
最好的问候,
PS:我需要批量翻译。我不关心样式或动态转换,只需要一些基本示例以了解 ICU4j 批量转换器的外观。
好的,我已经明白了。
import com.ibm.icu.text.Transliterator;
public class BulgarianToLatin {
public static String BULGARIAN_TO_LATIN = "Bulgarian-Latin/BGN";
public static void main(String[] args) {
String bgString = "Джокович";
Transliterator bulgarianToLatin = Transliterator.getInstance(BULGARIAN_TO_LATIN);
String result1 = bulgarianToLatin.transliterate(bgString);
System.out.println("Bulgarian to Latin:" + result1);
}
}
如果你不想使用现有的规则或者想要自定义一些东西,那么最后还可以对基于规则的转译进行一次修改。
import com.ibm.icu.text.Transliterator;
public class BulgarianToLatin {
public static String BULGARIAN_TO_LATIN = "Bulgarian-Latin/BGN";
public static void main(String[] args) {
String bgString = "а б в г д е ж з и й к л м н о п р с т у ф х ц ч ш щ ю я \n Юлиян Джокович";
String rules="::[А-ЪЬЮ-ъьюяѢѣѪѫ];" +
"Б > B;" +
"б > b;" +
"В > V;" +
"ТС > TS;" +
"Тс > Ts;" +
"ч > ch;" +
"ШТ > SHT;" +
"Шт > Sht;" +
"шт > sht;" +
"{Ш}[[б-джзй-нп-тф-щь][аеиоуъюяѣѫ]] > Sh;" +
"Я > YA;" +
"я > ya;";
Transliterator bulgarianToLatin = Transliterator.createFromRules("temp", rules, Transliterator.FORWARD);
String result1 = bulgarianToLatin.transliterate(bgString);
System.out.println("Bulgarian to Latin:" + result1);
}
}