有 2 个数组,拉丁文和西里尔文。 得到 1 个字符串,如“мама моет раму” 需要转换成拉丁语才能得到这个“mama_noet_ramu”
使用这个“Arrays.asList(copyFrom).contains(cur)”来查找数组中是否有一个字符,但不知道如何获取这个字符在数组中的位置?
char[] copyTo = {'a','b','v','g','d','e','e','g','z','i','i','k','l','m','n','o','p','R','S','T','U','f','h','c','h','h','h',' ',' ',' ','e','u','y','_'};
char[] copyFrom = {'а','б','в','г','д','е','ё','ж','з','и','й','к','л','м','н','о','п','р','с','т','у','ф','х','ц','ч','щ','ш','ь','ы','ъ','э','ю','я',' '};
谢谢/
最佳答案
最初我尝试构建您在上面所做的基本功能,但我很快了解到单个西里尔字母字符可能映射到多个拉丁字符 - 因此进行“字符”替换并不能完成这项工作。
可能有更好的方法来执行此操作,但这是我想出的函数。
public static String transliterate(String srcstring) {
ArrayList<String> copyTo = new ArrayList<String>();
String cyrcodes = "";
for (int i=1040;i<=1067;i++) {
cyrcodes = cyrcodes + (char)i;
}
for (int j=1072;j<=1099;j++) {
cyrcodes = cyrcodes + (char)j;
}
// Uppercase
copyTo.add("A");
copyTo.add("B");
copyTo.add("V");
copyTo.add("G");
copyTo.add("D");
copyTo.add("E");
copyTo.add("Zh");
copyTo.add("Z");
copyTo.add("I");
copyTo.add("I");
copyTo.add("K");
copyTo.add("L");
copyTo.add("M");
copyTo.add("N");
copyTo.add("O");
copyTo.add("P");
copyTo.add("R");
copyTo.add("S");
copyTo.add("T");
copyTo.add("U");
copyTo.add("F");
copyTo.add("Kh");
copyTo.add("TS");
copyTo.add("Ch");
copyTo.add("Sh");
copyTo.add("Shch");
copyTo.add("");
copyTo.add("Y");
// lowercase
copyTo.add("a");
copyTo.add("b");
copyTo.add("v");
copyTo.add("g");
copyTo.add("d");
copyTo.add("e");
copyTo.add("zh");
copyTo.add("z");
copyTo.add("i");
copyTo.add("i");
copyTo.add("k");
copyTo.add("l");
copyTo.add("m");
copyTo.add("n");
copyTo.add("o");
copyTo.add("p");
copyTo.add("r");
copyTo.add("s");
copyTo.add("t");
copyTo.add("u");
copyTo.add("f");
copyTo.add("kh");
copyTo.add("ts");
copyTo.add("ch");
copyTo.add("sh");
copyTo.add("shch");
copyTo.add("");
copyTo.add("y");
String newstring = "";
char onechar;
int replacewith;
for (int j=0; j<srcstring.length();j++) {
onechar = srcstring.charAt(j);
replacewith = cyrcodes.indexOf((int)onechar);
if (replacewith > -1) {
newstring = newstring + copyTo.get(replacewith);
} else {
// keep the original character, not in replace list
newstring = newstring + String.valueOf(onechar);
}
}
return newstring;
}
关于java - 我需要在 android 中进行简单的音译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6089433/