逐个字符地翻译字符串

我应该如何实现一个方法,该方法获取由拉丁字符组成的String,将其转换为由不同字符集组成的字符串,比如西里尔语。

以下是它在PHP中的完成方式:

function latin_to_cyrillic($string) { $array = array( "а" => "a", "б" => "b", "в" => "v", "г" => "g", "д" => "d", "е" => "e", "ж" => "zh", "з" => "z", "и" => "i", "й" => "y", "к" => "k", "л" => "l", "м" => "m", "н" => "n", "о" => "o", "п" => "p", "р" => "r", "с" => "s", "т" => "t", "у" => "u", "ф" => "f", "х" => "h", "ц" => "ts", "ч" => "ch", "ш" => "sh", "щ" => "sht", "ь" => "y", "ъ" => "a", "ю" => "yu", "я" => "ya", "А" => "A", "Б" => "B", "В" => "V", "Г" => "G", "Д" => "D", "Е" => "E", "Ж" => "Zh", "З" => "Z", "И" => "I", "Й" => "Y", "К" => "K", "Л" => "L", "М" => "M", "Н" => "N", "О" => "O", "П" => "P", "Р" => "R", "С" => "S", "Т" => "T", "У" => "U", "Ф" => "F", "Х" => "H", "Ц" => "Ts", "Ч" => "Ch", "Ш" => "Sh", "Щ" => "Sht", "Ь" => "Y", "Ъ" => "A", "Ю" => "Yu", "Я" => "Ya", "–" => "-"); return str_replace(array_values($array), array_keys($array), $string); } 

首先,您需要一个转换表,为每个角色定义翻译。

然后,您通过char读取字符串char,并使用转换表来获取转换。 容易,对吗?

你可以使用这样的东西:

 class Translator { HashMap translation = new HashMap(); public Translator(){ //Populate the translation table here; } public String translate(String origin){ String destiny=""; for(int i=0;i 

或者你可以使用

 replaceEach(String text, String[] searchList, String[] replacementList) Replaces all occurrences of Strings within another String. 

来自org.apache.commons.lang.StringUtils 。 您可以使用拉丁字符填充String[] (但作为String ),然后使用西里尔字符填充另一个String[]作为String ,并使用该函数。

 String[] latinCharacters = [] //Populate them String[] cyrillicCharacters = [] //Populate them public String translate(String origin){ return replaceEach(origin,latinCharacters,cyrillicCharacters); }