36

有谁知道如何检测java中的可打印字符?

过了一会儿(试验/错误)我得到了这个方法:

    public boolean isPrintableChar( char c ) {
        Character.UnicodeBlock block = Character.UnicodeBlock.of( c );
        return (!Character.isISOControl(c)) &&
                c != KeyEvent.CHAR_UNDEFINED &&
                block != null &&
                block != Character.UnicodeBlock.SPECIALS;
    }

我通过 KeyListener 获取输入,然后 Ctr-'key' 打印了一个正方形。有了这个功能似乎还算够用。

我在这里错过了一些字符吗?

4

2 回答 2

43

这似乎是“字体”独立的方式。

public boolean isPrintableChar( char c ) {
    Character.UnicodeBlock block = Character.UnicodeBlock.of( c );
    return (!Character.isISOControl(c)) &&
            c != KeyEvent.CHAR_UNDEFINED &&
            block != null &&
            block != Character.UnicodeBlock.SPECIALS;
}
于 2009-01-06T23:07:05.243 回答
15

我不确定我是否理解你的问题。但是,如果您想检测是否可以将字符绘制到 Graphics 对象,并且如果不能打印一些占位符字符,您可能会发现有用:

Font.canDisplay(int)

它将检查字体是否可以显示特定的代码点(更多的是检查字体是否可显示——因为有些字符是可显示的——比如ą——但有些字体不能显示它们。

于 2008-10-21T08:02:15.493 回答