2008-10-21 57 views
28

有谁知道如何检测java中的可打印字符?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”打印的正方形。有了这个功能看起来相当不错。

我在这里是否缺少一些字符?

预先感谢您。

+0

我永远无法理解。为什么Java没有`Character.isPrintable()`方法d。另一种技术是将Character.getType(ch)与所有可打印的Unicode字符类进行比较,这仍然看起来很费劲。 – 2015-05-04 15:16:44

+0

你应该考虑这个,这个答案为我做了这个:http://stackoverflow.com/a/41100873/5285687 – YellowJ 2017-02-28 08:18:49

回答

36

看来这是“字体”独立的方式

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; 
} 
11

我不是很确定我是否理解你的问题。但是如果你想检测是否字符可以得出Graphics对象,如果没有打印一些占位符字符,你可能会发现有用:

Font.canDisplay(int) 

它会检查字体是否可以显示特定代码点(更是检查是否字体是显示在所有 - 因为有字符是显示 - 就像一个 - 但是有些字体不能显示他们