我应该如何实现一种方法,获取由拉丁字符组成的字符串,并将其转换为由不同字符集(比方说西里尔字母)组成的字符串。
\n\n例如,以下是 PHP 中的完成方式:
\n\nfunction latin_to_cyrillic($string)\n{\n $array = array(\n "\xd0\xb0" => "a",\n "\xd0\xb1" => "b",\n "\xd0\xb2" => "v",\n "\xd0\xb3" => "g",\n "\xd0\xb4" => "d",\n "\xd0\xb5" => "e",\n "\xd0\xb6" => "zh",\n "\xd0\xb7" => "z",\n "\xd0\xb8" => "i",\n "\xd0\xb9" => "y",\n "\xd0\xba" => "k",\n "\xd0\xbb" => "l",\n "\xd0\xbc" => "m",\n "\xd0\xbd" => "n",\n "\xd0\xbe" => "o",\n "\xd0\xbf" => "p",\n "\xd1\x80" => "r",\n "\xd1\x81" => "s",\n "\xd1\x82" => "t",\n "\xd1\x83" => "u",\n "\xd1\x84" => "f",\n "\xd1\x85" => "h",\n "\xd1\x86" => "ts",\n "\xd1\x87" => "ch",\n "\xd1\x88" => "sh",\n "\xd1\x89" => "sht",\n "\xd1\x8c" => "y",\n "\xd1\x8a" => "a",\n "\xd1\x8e" => "yu",\n "\xd1\x8f" => "ya",\n "\xd0\x90" => "A",\n "\xd0\x91" => "B",\n "\xd0\x92" => "V",\n "\xd0\x93" => "G",\n "\xd0\x94" => "D",\n "\xd0\x95" => "E",\n "\xd0\x96" => "Zh",\n "\xd0\x97" => "Z",\n "\xd0\x98" => "I",\n "\xd0\x99" => "Y",\n "\xd0\x9a" => "K",\n "\xd0\x9b" => "L",\n "\xd0\x9c" => "M",\n "\xd0\x9d" => "N",\n "\xd0\x9e" => "O",\n "\xd0\x9f" => "P",\n "\xd0\xa0" => "R",\n "\xd0\xa1" => "S",\n "\xd0\xa2" => "T",\n "\xd0\xa3" => "U",\n "\xd0\xa4" => "F",\n "\xd0\xa5" => "H",\n "\xd0\xa6" => "Ts",\n "\xd0\xa7" => "Ch",\n "\xd0\xa8" => "Sh",\n "\xd0\xa9" => "Sht",\n "\xd0\xac" => "Y",\n "\xd0\xaa" => "A",\n "\xd0\xae" => "Yu",\n "\xd0\xaf" => "Ya",\n "\xe2\x80\x93" => "-");\n\n return str_replace(array_values($array), array_keys($array), $string);\n\n}\nRun Code Online (Sandbox Code Playgroud)\n
首先,您需要一个转换表,定义每个字符的翻译。
然后,您逐个字符地读取字符串,并使用翻译表来获取翻译。容易,对吧?
你可以使用这样的东西:
class Translator {
HashMap<String,String> translation = new HashMap<String,String>();
public Translator(){
//Populate the translation table here;
}
public String translate(String origin){
String destiny="";
for(int i=0;i<origin.length();i++){
char character = origin.charAt(i);
destiny = destiny + translation.get(Character.toString(character));
}
return destiny;
}
}
Run Code Online (Sandbox Code Playgroud)
或者你可以使用
replaceEach(String text, String[] searchList, String[] replacementList)
Replaces all occurrences of Strings within another String.
Run Code Online (Sandbox Code Playgroud)
从org.apache.commons.lang.StringUtils。您可以使用String[]拉丁字符(但为String)填充 a,然后String[]使用西里尔字符 as填充另一个String,并使用该函数。
String[] latinCharacters = [] //Populate them
String[] cyrillicCharacters = [] //Populate them
public String translate(String origin){
return replaceEach(origin,latinCharacters,cyrillicCharacters);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9473 次 |
| 最近记录: |