2008-10-21 69 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) 

它會檢查字體是否可以顯示特定代碼點(更是檢查是否字體是顯示在所有 - 因爲有字符是顯示 - 就像一個 - 但是有些字體不能顯示他們