0

假设我们希望有一个非 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)来修复它,但这并没有做任何事情。有任何想法吗?

4

1 回答 1

1

2083 是十六进制值,而不是十进制值。有关此字符的详细信息,请参阅unicode 页面。我认为你想要的值是 0x2083,或者 8323

于 2013-05-09T03:21:29.447 回答