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

6

我有一个字符串a="L1-23Миграција од VPN и промена на брзина ACTELIS Agregator alternativna 8-/208";

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

输出应该如下:

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

谢谢!


你是否针对保加利亚字母做过这个?这很类似,我必须针对马其顿字母做同样的事情。 - Veljko
1
我只用 switch 实现了这样的东西。我几乎可以确定没有预先编写的库,因为不同语言的音译可能会有所不同。毕竟,你只需要在 switch 语句中编写30个 case,就可以得到你想要的结果。 - Ivaylo Strandjev
30 + 30(大小写可以吗?)好的,我认为可以接受。你能给我一些相关代码吗?谢谢! - Veljko
还有一个问题-您如何区分英语中的"C",我想这也是保加利亚语中的"S"吧?那么如何告诉它如果这是英语C(例如单词“Case”),则不进行转换,如果它是西里尔字母C,则将其更改为S(例如Ситуација应该是Situacija)? - Veljko
让我们在聊天中继续这个讨论:http://chat.stackoverflow.com/rooms/12150/discussion-between-izomorphius-and-dejan - Ivaylo Strandjev
显示剩余4条评论
1个回答

1
我在stackoverflow上找到了这个方法Transliteration from Cyrillic to Latin ICU4j java,它是用来将西里尔字母(俄语)转换为拉丁字母的(但如果需要,你也可以反过来转换)。我稍微修改了一下,使其适用于马其顿的西里尔字母(我相信这就是你需要的)。以下是代码:
public static String convertCyrilic(String message){
    char[] abcCyr =   {' ','а','б','в','г','д','ѓ','е', 'ж','з','ѕ','и','ј','к','л','љ','м','н','њ','о','п','р','с','т', 'ќ','у', 'ф','х','ц','ч','џ','ш', 'А','Б','В','Г','Д','Ѓ','Е', 'Ж','З','Ѕ','И','Ј','К','Л','Љ','М','Н','Њ','О','П','Р','С','Т', 'Ќ', 'У','Ф', 'Х','Ц','Ч','Џ','Ш','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','/','-'};
    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","/","-"};
    StringBuilder builder = new StringBuilder();
    for (int i = 0; i < message.length(); i++) {
        for (int x = 0; x < abcCyr.length; x++ ) {
            if (message.charAt(i) == abcCyr[x]) {
                builder.append(abcLat[x]);
            }
        }
    }
    return builder.toString();
}

然后只需使用

标签

String converted = convertCyrillic(a);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接