2008-10-21 12 views
28

में प्रिंट करने योग्य चार क्या कोई जानता है कि जावा में प्रिंट करने योग्य पात्रों का पता कैसे लगाया जाए?जावा

थोड़ी देर (परीक्षण/त्रुटि) मैं इस विधि के लिए प्राप्त करने के बाद:

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 के माध्यम से इनपुट हो रही है और आने सीटीआर-'key 'एक वर्ग छपी। इस समारोह के साथ काफी पर्याप्त लगता है।

क्या मुझे यहां कुछ char याद आ रही है?

अग्रिम धन्यवाद।

+0

मैं कभी नहीं समझ में आ गए हैं। जावा में 'Character.is प्रिंट करने योग्य()' मेथो क्यों नहीं है घ। एक अन्य तकनीक 'Character.getType (ch)' की तुलना करने के लिए सभी प्रिंट करने योग्य यूनिकोड चरित्र वर्गों के साथ है, जो अभी भी बहुत प्रयास करने की तरह लगती है। –

+0

आपको यह विचार करना चाहिए, इस उत्तर ने मेरे लिए यह किया: http://stackoverflow.com/a/41100873/5285687 – YellowJ

उत्तर

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

मुझे पूरी तरह से यकीन नहीं है कि मैं आपकी समस्या को समझता हूं या नहीं। लेकिन अगर आप का पता लगाने अगर चरित्र ग्राफिक्स वस्तु के लिए तैयार किया जा सकता है, और यदि नहीं कुछ प्लेसहोल्डर प्रिंट चार आप उपयोगी मिल सकती हैं:

Font.canDisplay(int) 

यह फ़ॉन्ट विशिष्ट कोडपॉइंट प्रदर्शित कर सकते हैं कि क्या जाँच करेगा (यह अधिक है कि क्या फ़ॉन्ट जाँच है सब पर प्रदर्शन योग्य है - एक तरह - - के बाद से वहाँ वर्ण कि प्रदर्शन योग्य हैं। लेकिन कुछ फोंट नहीं कर सकते उन्हें प्रदर्शित

+0

यह भी काम करता है। धन्यवाद। मैं कुंजी बोर्ड में लिखे गए सभी पात्रों को एक jlabel पर प्रिंट कर रहा हूं। इस सत्यापन के साथ^सी, "रिटर्न" "ईएससी" एफ 1..एफ 12 वर्ण अजीब छोटे वर्गों के रूप में प्रदर्शित होते हैं। दोनों (मेरा फ़ंक्शन और आपकी विधि) उन्हें ठीक से फ़िल्टर करें। मुझे लगता है मुझे कुछ टेस्ट केस जोड़ना चाहिए। – OscarRyz

+0

ठीक है, यह मेरे कीबोर्ड में वर्णों के साथ काम करता है, लेकिन 0 से Character.MAX_VALUE के पुनरावृत्त होने के बाद वहां कई वर्ण हैं जिन्हें चार 384 के आसपास Font.canDisplay() द्वारा प्रदर्शित नहीं किया जा सकता है। यह उपयोगकर्ता फ़ॉन्ट पर निर्भर करता है। दोनों काम करेंगे। धन्यवाद – OscarRyz