0

たとえば、U+2082 (添え字 2) などの非 ASCII 文字を使用したいとします。

通常、これを 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