如何在Java字符串中将西里尔字母转换为英文拉丁字母?

Dej*_*jan 6 java letters

我有字符串 a= "L1-23\xd0\x9c\xd0\xb8\xd0\xb3\xd1\x80\xd0\xb0\xd1\x86\xd0\xb8\xd1\x98\xd0\xb0 \xd0\xbe\ xd0\xb4 VPN \xd0\xb8 \xd0\xbf\xd1\x80\xd0\xbe\xd0\xbc\xd0\xb5\xd0\xbd\xd0\xb0 \xd0\xbd\xd0\xb0 \xd0\xb1\xd1 \x80\xd0\xb7\xd0\xb8\xd0\xbd\xd0\xb0 ACTELIS 聚合器替代品 8-/208"

\n\n

我想为每个字符串检查字符串中是否有一些西里尔字母并将它们转换为英语:

\n\n

输出应如下所示:

\n\n

L1-23Migracija od VPN i promena na brzina ACTELIS Agregator alternativna 8-/208

\n\n

谢谢!

\n

Zoz*_*ski 2

我在 stackoverflow Transliteration from Cyrillic to Latin ICU4j java上找到了这个方法,它用于将西里尔语(俄语)转换为拉丁语(但如果需要,您可以将其转换为其他方式)。我对其进行了一些调整,使其与马其顿西里尔字母兼容(我相信这就是您所需要的)。这里是:

\n\n
public static String convertCyrilic(String message){\n    char[] abcCyr =   {\' \',\'\xd0\xb0\',\'\xd0\xb1\',\'\xd0\xb2\',\'\xd0\xb3\',\'\xd0\xb4\',\'\xd1\x93\',\'\xd0\xb5\', \'\xd0\xb6\',\'\xd0\xb7\',\'\xd1\x95\',\'\xd0\xb8\',\'\xd1\x98\',\'\xd0\xba\',\'\xd0\xbb\',\'\xd1\x99\',\'\xd0\xbc\',\'\xd0\xbd\',\'\xd1\x9a\',\'\xd0\xbe\',\'\xd0\xbf\',\'\xd1\x80\',\'\xd1\x81\',\'\xd1\x82\', \'\xd1\x9c\',\'\xd1\x83\', \'\xd1\x84\',\'\xd1\x85\',\'\xd1\x86\',\'\xd1\x87\',\'\xd1\x9f\',\'\xd1\x88\', \'\xd0\x90\',\'\xd0\x91\',\'\xd0\x92\',\'\xd0\x93\',\'\xd0\x94\',\'\xd0\x83\',\'\xd0\x95\', \'\xd0\x96\',\'\xd0\x97\',\'\xd0\x85\',\'\xd0\x98\',\'\xd0\x88\',\'\xd0\x9a\',\'\xd0\x9b\',\'\xd0\x89\',\'\xd0\x9c\',\'\xd0\x9d\',\'\xd0\x8a\',\'\xd0\x9e\',\'\xd0\x9f\',\'\xd0\xa0\',\'\xd0\xa1\',\'\xd0\xa2\', \'\xd0\x8c\', \'\xd0\xa3\',\'\xd0\xa4\', \'\xd0\xa5\',\'\xd0\xa6\',\'\xd0\xa7\',\'\xd0\x8f\',\'\xd0\xa8\',\'a\',\'b\',\'c\',\'d\',\'e\',\'f\',\'g\',\'h\',\'i\',\'j\',\'k\',\'l\',\'m\',\'n\',\'o\',\'p\',\'q\',\'r\',\'s\',\'t\',\'u\',\'v\',\'w\',\'x\',\'y\',\'z\',\'A\',\'B\',\'C\',\'D\',\'E\',\'F\',\'G\',\'H\',\'I\',\'J\',\'K\',\'L\',\'M\',\'N\',\'O\',\'P\',\'Q\',\'R\',\'S\',\'T\',\'U\',\'V\',\'W\',\'X\',\'Y\',\'Z\',\'1\',\'2\',\'3\',\'4\',\'5\',\'6\',\'7\',\'8\',\'9\',\'/\',\'-\'};\n    String[] abcLat = {" ","a","b","v","g","d","]","e","zh","z","y","i","j","k","l","q","m","n","w","o","p","r","s","t","\'","u","f","h", "c",";", "x","{","A","B","V","G","D","}","E","Zh","Z","Y","I","J","K","L","Q","M","N","W","O","P","R","S","T","KJ","U","F","H", "C",":", "X","{", "a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z","A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z","1","2","3","4","5","6","7","8","9","/","-"};\n    StringBuilder builder = new StringBuilder();\n    for (int i = 0; i < message.length(); i++) {\n        for (int x = 0; x < abcCyr.length; x++ ) {\n            if (message.charAt(i) == abcCyr[x]) {\n                builder.append(abcLat[x]);\n            }\n        }\n    }\n    return builder.toString();\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n

然后只需使用

\n\n
String converted = convertCyrillic(a);\n
Run Code Online (Sandbox Code Playgroud)\n