我正在安装警报,但它们有一个界面,我必须为各个区域命名。问题是他们只能接受英语中不存在的希腊字符,否则他们必须是英语的等价物。例如,如果我写“ΠΑΡΑΘΥΡΟ”,字符 1,2,3,5,6,7 必须用英文输入,因为在外观上与希腊字符相同。但是字符 0 和 4 只能是希腊语。我只关心大写字母。关于如何使用 2 个简单的 jtextfields 的任何想法?谢谢!
问问题
2362 次
1 回答
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 都已转换。
于 2012-07-21T09:25:36.700 回答