2009-05-20 12 views
12

मैं सी # में सभी प्रिंट करने योग्य पात्रों की एक चार सरणी प्राप्त करने में सक्षम होना चाहता हूं, क्या कोई यह जानता है कि यह कैसे करें?मैं सी # में सभी प्रिंट करने योग्य पात्रों की सूची कैसे प्राप्त करूं?

संपादित करें:

करके प्रिंट करने योग्य मैं दिखाई यूरोपीय वर्ण मतलब है, तो हाँ, उमलॉट टाइल्ड, लहजे आदि

+0

प्रिंट करने योग्य परिभाषित – AnthonyWJones

+0

कृपया परिभाषित "प्रिंट करने योग्य।" -? आप बस "प्रिंट योग्य ASCII वर्ण" क्या मतलब है (ilivewithin के answe के अनुसार आर) या आप उच्चारण वर्ण शामिल करना चाहते हैं? –

+0

मैं प्रिंट द्वारा मान रहा हूं हम पेपर पर प्रिंट करने योग्य के बारे में बात कर रहे हैं? यदि आप केवल एक एसीआई लुकअप की तलाश में हैं http://www.asciitable.com एक है। यूनिकोड charmap.exe के लिए स्पष्ट विकल्प है। –

उत्तर

22

यह आप सभी अक्षर हैं जो नियंत्रण वर्ण नहीं माना जाता है के साथ एक सूची दे देंगे :

List<Char> printableChars = new List<char>(); 
for (int i = char.MinValue; i <= char.MaxValue; i++) 
{ 
    char c = Convert.ToChar(i); 
    if (!char.IsControl(c)) 
    { 
     printableChars.Add(c); 
    } 
} 

आप अन्य Char.IsXxxx तरीकों की जांच के लिए एक संयोजन है कि अपनी आवश्यकताओं सूट खोजने के लिए कर सकते हैं।

+0

किसी कारण से मैं समझ नहीं पा रहा हूं, यदि आप करते हैं: के लिए (char c = char.MinValue; c <= char.MaxValue; C++) OutOfMemoryException - सूची तेजी से भरती है –

+0

ऐसा लगता है कि C++ कथन काउंटर लपेटता है 65535 के बाद 0 पर, जिसका अर्थ है कि <

+0

(मैं कभी-कभी टिप्पणियों को संपादित कर सकता हूं ताकि उन परेशान वर्तनी त्रुटियों को हटाया जा सके ...) –

3

एक LINQ समाधान (फ्रेड्रिक Mork के आधार पर):

Enumerable.Range(char.MinValue, char.MaxValue).Select(c => (char)c).Where(
    c => !char.IsControl(c)).ToArray(); 
+0

क्या आपने इसे संकलित/चलाने की कोशिश की है? :) –

+0

ओह, वहां कलाकारों की जरूरत है। चीयर्स। – Noldorin

+0

3.5SP1 के रूप में काम नहीं करेगा। मेरा जवाब देखें –

18

यहाँ फ्रेड्रिक के समाधान का एक LINQ संस्करण है। ध्यान दें कि Enumerable.RangeIEnumerable<int> उत्पन्न करता है, इसलिए आपको पहले वर्णों में कनवर्ट करना होगा। Cast<char> 3.5SP0 मेरा मानना ​​है कि में काम किया होता है, लेकिन 3.5SP1 के रूप में आप एक "उचित" रूपांतरण करना है:

var chars = Enumerable.Range(0, char.MaxValue+1) 
         .Select(i => (char) i) 
         .Where(c => !char.IsControl(c)) 
         .ToArray(); 

मैं परिणाम के रूप में बनाया है, जिसका कि के रूप में एक सरणी क्या सवाल के लिए कहा - यह है हालांकि सबसे अच्छा विचार नहीं है। यह उपयोग के मामले पर निर्भर करता है।

ध्यान दें कि यह पूर्ण यूनिकोड वर्णों पर भी विचार नहीं करता है, केवल मूल बहुभाषी विमान में ही। मैं क्या यह उच्च/कम किराए की कोख के लिए देता है पता नहीं है, लेकिन यह कम से कम एक भी char वास्तव में आप सब कुछ :(

+0

मुझे वास्तव में उस लिंक सामग्री में गोता लगाने की ज़रूरत है, वहां खोजने के लिए कुछ सुरुचिपूर्ण समाधान हैं: ओ) –

+0

डर्न, इसलिए मैंने जॉन स्कीट को हरा दिया और मेरा जवाब अभी भी हार गया। :(बस एक नोट के रूप में: आप उस चयन कॉल को कास्ट के साथ थोड़ा सा बनाने के लिए प्रतिस्थापित कर सकते हैं। – Noldorin

+1

डाउनवॉटर, कृपया कारण दें। (ध्यान दें कि हालांकि यह नोल्डोरिन के उत्तर के समान है, मुझे विश्वास है कि यह अधिक जानकारी देता है - और यह काम करता है :) –

0

का प्रतिनिधित्व नहीं करता है कि जानने लायक है मैं जानता हूँ कि ASCII विशेष रूप से अनुरोध किया नहीं किया गया था, लेकिन यह एक है । त्वरित तरीका सभी प्रिंट योग्य ASCII वर्ण की एक सूची प्राप्त करने के लिए

for (Int32 i = 0x20; i <= 0x7e; i++) 
{ 
    printableChars.Add(Convert.ToChar(i)); 
} 

देखें इस ASCII table

0
public bool IsPrintableASCII(char c) 
{ 
    return c >= '\x20' && c <= '\x7e'; 
} 
+1

इस मुद्दे के जवाब के साथ कुछ स्पष्टीकरण जोड़ें कि इस मुद्दे को वर्तमान समस्या को ठीक करने में ओपी की मदद कैसे करें –

संबंधित मुद्दे