假设我们希望有一个非ASCII字符,例如U + 2082(下标2)。
通常,我们可以在swing组件(如JFrame)中将其显示为Character.toString('\u2082')
。
现在,我的问题是我无法确定确切的Unicode代码,因为确切的代码由参数中提供的String确定。该参数将始终是多原子离子 - 例如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)来修复它,但这没有做任何事情。有什么想法吗?