将外国字符(希腊语)转换为英语字符。

时间:2012-07-21 08:14:44

标签: java string jtextfield

我正在安装警报,但他们有一个界面,我必须给各个区域命名。问题是他们只能接受英语中不存在的希腊字符,否则他们必须是英语等价物。 例如,如果我写“ΠΑΡΑΘΥΡΟ”,字母1,2,3,5,6,7必须用英语输入,因为与出现的希腊字母相同。但是字母0和4只能是希腊语。 我只关心首都。 有关如何使用2个简单的jtextfields的任何想法? 谢谢!

1 个答案:

答案 0 :(得分:3)

使用HashMap翻译字符。由于问题域很小并且可能永远不会改变,因此对地图内容进行硬编码是合理的,如下所示:

private static final Map<Character, Character> GREEK_TO_ROMAN = new HashMap<>();
static {
    GREEK_TO_ROMAN.put('\u0391', '\u0041');  // uppercase alpha
    GREEK_TO_ROMAN.put('\u03A1', '\u0050');  // uppercase rho
    // ...
}

然后获取输入字符串的字符数组,根据需要翻译字符,并从更改的数组中创建一个新的字符串:

String s = "ΠΑΡΑΘΥΡΟ";
char[] chars = s.toCharArray();
for (int i = 0; i < chars.length; i++) {
    Character repl = GREEK_TO_ROMAN.get(chars[i]);
    if (repl != null)
        chars[i] = repl;
    }
s = new String(chars);

JTextField如何发挥作用我还没有看到,但也许如果你想要你可以将它子类化,覆盖getText()方法并确保它已经转换的任何String。