2010-08-20 11 views
12

मैं निम्नलिखितमैं सूची में सभी तत्वों को कैसे ट्रिम कर सकता हूं?

string tl = " aaa, bbb, ccc, dddd    eeeee"; 

var tags = new List<string>(); 
tags.AddRange(tl.Split(',')); 
tags.ForEach(x => x = x.Trim().TrimStart().TrimEnd()); 

var result = String.Join(",", tags.ToArray()); 

कोशिश कर रहा हूँ लेकिन यह काम नहीं करता है, टैग हमेशा वापस के रूप में "aaa" "bbb" आते हैं,।

मैं सूची में सभी तत्वों को कैसे ट्रिम कर सकता हूं?

उत्तर

24
// you can omit the final ToArray call if you're using .NET 4 
var result = string.Join(",", tl.Split(',').Select(s => s.Trim()).ToArray()); 

आप केवल अंतिम परिणाम स्ट्रिंग की जरूरत है, न कि मध्यवर्ती संग्रह से, तो आप एक नियमित अभिव्यक्ति स्ट्रिंग साफ करने के लिए इस्तेमाल कर सकते हैं। आप यह निर्धारित करने के लिए किया जाए या नहीं regex विभाजन ट्रिम-में शामिल होने तकनीक से बेहतर साबित बेंचमार्क करना होगा:

var result = Regex.Replace(tl, @"(?<=^|,) +| +(?=,|$)", ""); 
+0

यह जिस तरह से चाहता है वह काम नहीं करेगा। समस्या यह है कि dddd और eeeee के बीच कोई अल्पविराम नहीं है। –

+5

@ जस्टिन: ओपी कहां कहता है कि यह एक समस्या है? जहां तक ​​मैं कह सकता हूं कि सूची में चार तत्व होना चाहिए: * "aaa" *, * "bbb" *, * "ccc" * और * "dddd eeeee" *। – LukeH

+0

मुझे थोड़े लगा। और तुम सही हो मैंने बहुत ज्यादा पढ़ा और एक धारणा बनाई। –

1

आपकी समस्या dddd और eeeee के बीच कोई अल्पविराम है कि वहाँ है। यदि आप उन्हें अलग करना चाहते हैं, तो आपको ' ' पर विभाजित करने की आवश्यकता है, कॉमा को पट्टी करें, और फिर अतिरिक्त सफेद जगह को ट्रिम करें।

string tl = " aaa, bbb, ccc, dddd    eeeee"; 

var result = t1.Split(' ').Where(s => !String.IsNullOrEmpty()) 
          .Select(s => s.Replace(',','').Trim()) 
          .ToArray(); 
+0

बस स्पेस द्वारा विभाजित करने के बाद सभी रिक्त तत्वों को फ़िल्टर करना याद रखें: tl.Split ('')। चयन करें (एस => एस। रीप्लेस (",", "")। ट्रिम())। कहां है =>! string.IsNullOrEmpty (ओं))। ToArray() – theburningmonk

5

कारण अपने दृष्टिकोण काम नहीं करता है कि x वर्तमान स्ट्रिंग संदर्भ की एक प्रति (अर्थात प्रतिनिधि के लिए स्थानीय) ForEach कॉल में कार्रवाई की जा रही है। इसलिए असाइनमेंट सूची में संदर्भित आइटम को प्रभावित नहीं करता है।

4

क्या हो रहा है कि आप foreach कथन का उपयोग करके संग्रह को संशोधित करने का प्रयास कर रहे हैं- जो नो-नो है। संग्रह को foreach के साथ संशोधित नहीं किया जा सकता है।

आपको इसे for लूप संशोधित करने की आवश्यकता होगी, या लैम्बडास का उपयोग करके, आप ल्यूकएच के समाधान का उपयोग कर सकते हैं।

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

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