2010-08-24 17 views
23

जो मैं पसंद करूंगा वह कुछ ऐसा है:सी #: स्ट्रिंग [] सीमित स्ट्रिंग के लिए। क्या कोई एक लाइनर है?

string[] strArray = {"Hi", "how", "are", "you"}; 
string strNew = strArray.Delimit(chDelimiter); 

हालांकि, ऐसा कोई फ़ंक्शन नहीं है। मैंने एमएसडीएन को देखा है और कुछ भी मुझे एक समारोह के रूप में नहीं देखा है जो एक ही कार्रवाई करेगा। मैंने स्ट्रिंगबिल्डर को देखा, और फिर, मेरे लिए कुछ भी खड़ा नहीं हुआ। क्या किसी को सरणी को एक सीमित स्ट्रिंग बनाने के लिए बेहद जटिल एक लाइनर के बारे में पता नहीं है। आपके लोगों की मदद के लिए धन्यवाद।

अद्यतन: वाह, लॉल, मेरा बुरा। मैंने खुद को सरणी पर जॉइन को देखा और यह मेरे बाहर नरक लगा रहा था। मैंने स्ट्रिंग को भी नहीं देखा। जॉइन। धन्यवाद दोस्तों। एक बार यह मुझे स्वीकार करने की अनुमति देता है मैं करूँगा। मदद की पूर्ति करो।

+0

कुछ की तरह LINQ उपयोग कर सकते हैं ' String.Join (chDelimiter, सरणी); 'आपको पहले चार को स्ट्रिंग में बदलना पड़ सकता है। एक सामान्य संस्करण भी है। मुझे संदेह है कि LINQ इसे एक सुरुचिपूर्ण तरीके से भी कर सकता है। –

+0

हाँ, मैंने गलत शामिल होने पर ध्यान दिया। धन्यवाद। – XstreamINsanity

उत्तर

43

सरणियों के लिए, आप उपयोग कर सकते हैं:

public static string Flatten(this IEnumerable elems, string separator) 
{ 
    if (elems == null) 
    { 
     return null; 
    } 

    StringBuilder sb = new StringBuilder(); 
    foreach (object elem in elems) 
    { 
     if (sb.Length > 0) 
     { 
      sb.Append(separator); 
     } 

     sb.Append(elem); 
    } 

    return sb.ToString(); 
} 

... कौन सा मैं की तरह उपयोग करें:

string.Join(", ", strArray); 

व्यक्तिगत रूप से, मैं एक विस्तार विधि है कि मैं सभी प्रकार के गणनीय संग्रह करने के लिए आवेदन कर सकते हैं का उपयोग करें इसलिए:

strArray.Flatten(", "); 
+0

अच्छा काम। मेरा मुख्य उद्देश्य यह है कि हमारे पास एक सीमांकित फ़ाइल है, इसे एसक्यूएल लाइट के साथ भंडारण विधि के रूप में संपादित करने के लिए एक प्रोग्राम में डाल दिया गया है, और फिर वे इसे एक सीमित फ़ाइल में वापस भेजना चाहते हैं। एक बार यह मुझे स्वीकार करने के बाद मैं करूँगा। धन्यवाद। – XstreamINsanity

+8

नेट 4.0 में, एक 'string.Join' अधिभार है जिसे आप किसी भी' आईनेमरेबल 'संग्रह के साथ उपयोग कर सकते हैं, http://msdn.microsoft.com/en-us/library/dd992421.aspx –

+0

@ डैंको: अच्छा! जैसे ही मैं अपने अनुप्रयोगों को .NET 4 पर ले जाता हूं, मैं निश्चित रूप से आपके द्वारा सुझाए गए तरीके का पक्ष लेगा। धन्यवाद! – kbrimington

4

उपयोग String.Join

string[] strArray = {"Hi", "how", "are", "you"}; 
string strNew = String.Join("," strArray); 
6

आप स्थिर String.Join विधि का उपयोग कर सकते हैं:

String strNew = String.Join(chDelimiter, strArray);


संपादित करें: जवाब में टिप्पणी करने के लिए: अपनी टिप्पणी के आधार पर, आप कई सरणियों ले जा सकते हैं, उन्हें एक साथ जोड़, और फिर पूरे परिणामस्वरूप सरणी में शामिल हों। आप IENumerable एक्सटेंशन विधि Concat का उपयोग कर ऐसा कर सकते हैं। यहां एक उदाहरण दिया गया है:

//define my two arrays... 
string[] strArray = { "Hi", "how", "are", "you" }; 
string[] strArray2 = { "Hola", "como", "esta", "usted" }; 

//Concatenate the two arrays together (forming a third array) and then call join on it... 
string strNew = String.Join(",", strArray.Concat(strArray2)); 

आशा है कि इससे मदद मिलती है!

+0

मुझे परेशान करता है कि अगर कुछ स्ट्रिंग है [], तो जब मैं करता हूं। जॉइन, मुझे अभी भी वह विकल्प उपलब्ध होना चाहिए। मेरे पास सरणी में शामिल होने का विकल्प होना चाहिए और उस सरणी में शामिल होने का विकल्प होना चाहिए। :) – XstreamINsanity

+0

हाँ, मैंने देखा। मुझे जरूरी नहीं था कि मुझे इसकी ज़रूरत है, मैं कह रहा हूं कि जब आपके पास स्ट्रिंग है [] और आप वैरिएबल का पालन करते हैं। जॉइन (strArray.Join(), आपको जॉइन नहीं मिलता है (स्ट्रिंग डेलीमीटर, स्ट्रिंग [] strArray) विकल्प, आपको कुछ अन्य शामिल विकल्प मिलते हैं। मुझे लगता है कि स्ट्रिंग [] में भी होना चाहिए। जॉइन (स्ट्रिंग डेलीमीटर, स्ट्रिंग [] स्ट्रैरे) विकल्प, लेकिन यह होगा। जॉइन (स्ट्रिंग डेलीमीटर) क्योंकि यह पहले से ही है एक सरणी। क्या मैंने यह स्पष्ट कर दिया क्योंकि मैंने खुद को भ्रमित कर दिया। :) – XstreamINsanity

5

String.Join() पर एक नज़र डालें।

आपका नमूना इस तरह दिखना चाहिए:

 string delimiter = "," 
     string[] strArray = { "Hi", "how", "are", "you" }; 
     string strNew = String.Join(delimiter, strArray); 
1
इस मामले में

, String.Join() शायद जाने के लिए सबसे आसान तरीका है आप समान रूप से हालांकि

var comSeparatedStrings = strings.Aggregate((acc, item) => acc + ", " + item); 
+0

दृश्यों के पीछे एक स्ट्रिंगबिल्डर का उपयोग न करने के कारण कुल मिलाकर बहुत धीमा है (iirc)। –

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

  • कोई संबंधित समस्या नहीं^_^