假设我们希望有一个非 ASCII 字符,例如 U+2082(下标 2)。
通常,我们可以将它显示在一个摆动组件中,例如 JFrame,如Character.toString('\u2082')
.
现在,我的问题是我无法确定确切的 Unicode 代码,因为确切的代码是由参数中提供的字符串确定的。该参数将始终是多原子离子 - 例如 PO3。我的目标是找到“3”,将其转换为下标 3 (U+2083),但还要将算法/方法抽象到足以适用于任何多原子离子(不仅仅是 PO3,还有 PO4 为好),并让它在 JFrame 上正确显示。我在下面提供我的方法。
private static String processName(String original)
{
char[] or = original.toCharArray();
int returned = -1;
for(int i = 0; i < or.length; i++)
{
if(Character.isDigit(or[i]))
{
returned = Integer.parseInt(Character.toString(or[i]));
or[i] = (char) (returned + 2080);
returned = -1;
}
}
return new String(or);
}
您可能在想,好吧,代码看起来很干净,应该可以正确显示。但是,该部件(char) (returned+2080)
不显示符号 - 它显示一个空白框。我试图通过设置兼容的字体(GNU Unifont)来修复它,但这并没有做任何事情。有任何想法吗?