2009-03-11 20 views
28

में शून्य/खाली स्ट्रिंग मानों से छुटकारा पा रहा है मेरे पास एक प्रोग्राम है जहां एक सरणी स्ट्रिंग का उपयोग करके अपना डेटा प्राप्त करती है। स्प्लिट (char [] delimiter)। (';' को डिलीमीटर के रूप में उपयोग करना।)सी # सरणी

कुछ मान, हालांकि, शून्य हैं। अर्थात। स्ट्रिंग में ऐसे हिस्से होते हैं जहां कोई डेटा नहीं होता है, इसलिए यह ऐसा कुछ करता है:

1; 2; ; 3;

इससे मेरे सरणी में शून्य मान होते हैं।

मैं उनसे कैसे छुटकारा पा सकता हूं?

+0

आप अपने प्रश्न को संपादित करना चाहिए बातिल और केवल राज्य रिक्त स्ट्रिंग दूर करने के लिए है। स्ट्रिंग। स्प्लिट नल स्ट्रिंग्स नहीं देता है, बस खाली। – Samuel

उत्तर

101

इस प्रयास करें:

yourString.Split(new string[] {";"}, StringSplitOptions.RemoveEmptyEntries); 
+7

जो संकलित नहीं करता है। आपको पहले पैरामीटर के रूप में नए char [] {';'} का उपयोग करने की आवश्यकता है। – Guffa

+2

ध्यान देने योग्य एक बात यह है कि यह केवल व्हाइटस्पेस वाली तारों को नहीं हटाएगा। – denver

+0

अपेक्षित के रूप में काम नहीं करता है। पूर्व: var a = "1" + "," + "" + "," + "2" + "," + "" + "," + "3" + "," + "" + "," + शून्य + "," + "4"; । ए। स्प्लिट (नया चार [] {','}, स्ट्रिंगस्प्लिटऑप्शन। रिमूवइएक्ट्रीइन्ट्रीज़); । Console.WriteLine (a.ToString()); 1, 2, 3, 3, 4 – PSR

2

आप कहाँ LINQ विस्तार विधि इस्तेमाल कर सकते हैं केवल गैर-शून्य या खाली मान वापस जाने के लिए।

string someString = "1;2;;3;"; 

IEnumerable<string> myResults = someString.Split(';').Where<string>(s => !string.IsNullOrEmpty(s)); 
+0

का परिणाम देगा। आप स्प्लिट और कहां के बीच चयन कर सकते हैं। व्हाइटस्पेस-केवल तारों को भी हटा दिया जाएगा। –

+1

नोट: स्प्लिट विधि कभी शून्य मान उत्पन्न नहीं करती है। – Guffa

+0

@TamasCzinege आप trim() के बजाय string.IsNullOrWhiteSpaces का उपयोग कर सकते हैं – PSR

0

आप डेटा के बंटवारे से पहले एक अर्धविराम के साथ कई आसन्न अर्धविराम प्रतिस्थापित करना चाहिए।

यह एक अर्धविराम दो अर्धविराम की जगह लेंगे:

datastr = datastr.replace(";;",";"); 

लेकिन, यदि आप दो से अधिक अर्धविराम एक साथ है, regex बेहतर होगा।

datastr = Regex.Replace(datastr, "([;][;]+)", ";"); 
2
public static string[] nullLessArray(string[] src) 
{ 
    Array.Sort(src); 
    Array.Reverse(src); 
    int index = Array.IndexOf(src, null); 

    string[] outputArray = new string[index]; 

    for (int counter = 0; counter < index; counter++) 
    { 
     outputArray[counter] = src[counter]; 
    } 

    return outputArray; 
} 
0
   words = poly[a].Split(charseparators, StringSplitOptions.RemoveEmptyEntries); 

       foreach (string word in words) 
        { 
         richTextBox1.Text += (d + 1)+ " " + word.Trim(',')+ "\r\n"; 
         d++; 
        } 

charseparators एक अंतरिक्ष

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