मैं एक सूची को C # में स्ट्रिंग में कैसे बदलूं?
जब मैं toString
एक सूची ऑब्जेक्ट पर अमल करता हूं, मुझे मिलता है:
System.Collections.Generic.List`1 [System.String]
मैं एक सूची को C # में स्ट्रिंग में कैसे बदलूं?
जब मैं toString
एक सूची ऑब्जेक्ट पर अमल करता हूं, मुझे मिलता है:
System.Collections.Generic.List`1 [System.String]
जवाबों:
शायद आप करने की कोशिश कर रहे हैं
string combindedString = string.Join( ",", myList.ToArray() );
आप सूची में तत्वों को विभाजित करने के लिए "," के साथ क्या बदल सकते हैं।
संपादित करें : जैसा कि आप भी कर सकते हैं टिप्पणियों में उल्लेख किया गया है
string combindedString = string.Join( ",", myList);
संदर्भ:
Join<T>(String, IEnumerable<T>)
Concatenates the members of a collection, using the specified separator between each member.
मैं अपनी आंत की भावना के साथ जाने वाला हूं और आपको लगता है कि आप ToString
सूची के प्रत्येक तत्व पर कॉल करने का परिणाम समझना चाहते हैं ।
var result = string.Join(",", list.ToArray());
आप उपयोग कर सकते हैं string.Join
:
List<string> list = new List<string>()
{
"Red",
"Blue",
"Green"
};
string output = string.Join(Environment.NewLine, list.ToArray());
Console.Write(output);
परिणाम होगा:
Red
Blue
Green
इसके विकल्प के रूप में Environment.NewLine
, आप इसे अपने चयन के स्ट्रिंग आधारित लाइन-सेपरेटर के साथ बदल सकते हैं।
यदि आप एक साधारण जुड़ाव से कुछ अधिक जटिल चाहते हैं तो आप LINQ जैसे का उपयोग कर सकते हैं
var result = myList.Aggregate((total, part) => total + "(" + part.ToLower() + ")");
ले जाएगा ["ए", "बी", "सी"] और उत्पादन "(ए) (बी) (सी)"
String.Join(" ", myList)
या String.Join(" ", myList.ToArray())
। पहला तर्क सब्सट्रिंग्स के बीच विभाजक है।
var myList = new List<String> { "foo","bar","baz"};
Console.WriteLine(String.Join("-", myList)); // prints "foo-bar-baz"
.NET के आपके संस्करण के आधार पर आपको पहले सूची में ToArray () का उपयोग करने की आवश्यकता हो सकती है।
आपके पास एक है List<string>
- इसलिए यदि आप चाहते हैं कि उन्हें संक्षिप्त किया जाए, तो कुछ पसंद है
string s = string.Join("", list);
काम करेगा (.NET 4.0 में कम से कम)। पहला पैरामीटर सीमांकक है। इसलिए आप अल्पविराम आदि भी कर सकते थे।
आप एक सूची बनाने के बजाय, स्ट्रींगबर्ल का उपयोग करना चाह सकते हैं।
.ToString()
संदर्भ प्रकार के लिए विधि आमतौर पर करने के लिए वापस निराकरण System.Object.ToString()
जब तक आप एक व्युत्पन्न प्रकार ओवरराइड (संभवतः निर्मित प्रकार के लिए विस्तार तरीकों का उपयोग कर)। इस पद्धति के लिए डिफ़ॉल्ट व्यवहार उस प्रकार के नाम को आउटपुट करना है जिस पर इसे कहा जाता है। तो आप जो देख रहे हैं वह अपेक्षित व्यवहार है।
आप string.Join(", ", myList.ToArray());
इसे हासिल करने के लिए कुछ करना चाह सकते हैं। यह एक अतिरिक्त कदम है, लेकिन इसे System.Collections.Generic.List<T>
थोड़ा आसान बनाने के लिए इसे एक विस्तार पद्धति में रखा जा सकता है। कुछ इस तरह:
public static class GenericListExtensions
{
public static string ToString<T>(this IList<T> list)
{
return string.Join(", ", list);
}
}
(ध्यान दें कि यह फ्री-हैंड और अनटाइटेड कोड है। मेरे पास फिलहाल कोई कंपाइलर काम नहीं है। इसलिए आप इसे थोड़ा प्रयोग करना चाहेंगे।)
यह बताना मुश्किल है, लेकिन शायद आप कुछ ऐसा ढूंढ रहे हैं:
var myString = String.Join(String.Empty, myList.ToArray());
यह सूची में प्रत्येक आइटम पर ToString () विधि को स्पष्ट रूप से कॉल करेगा और उन्हें संक्षिप्त करेगा।
String.Concat()
उसी चीज को बेहतर तरीके से हासिल करेंगे।
यदि आप किसी सूची में आइटम को एक बड़े लंबे स्ट्रिंग में बदलना चाहते हैं, तो यह करें String.Join("", myList)
:। फ्रेमवर्क के कुछ पुराने संस्करण आपको IEnumerable को दूसरे पैरामीटर के रूप में पारित करने की अनुमति नहीं देते हैं, इसलिए आपको कॉल करके अपनी सूची को सरणी में बदलने की आवश्यकता हो सकती है .ToArray ()।
आपके प्रश्न का सीधा उत्तर String.Join
वैसा ही है जैसा दूसरों ने उल्लेख किया है।
हालांकि, अगर आपको कुछ जोड़तोड़ की जरूरत है, तो आप उपयोग कर सकते हैं Aggregate
:
List<string> employees = new List<string>();
employees.Add("e1");
employees.Add("e2");
employees.Add("e3");
string employeesString = "'" + employees.Aggregate((x, y) => x + "','" + y) + "'";
Console.WriteLine(employeesString);
Console.ReadLine();
पाठ फ़ाइल से डेटा पुनर्प्राप्त करने और इसे ऐरे में संग्रहीत करने की कोशिश करने पर इस पद्धति ने मेरी मदद की, फिर इसे एक स्ट्रिंग उपलब्ध करने के लिए असाइन करें।
string[] lines = File.ReadAllLines(Environment.CurrentDirectory + "\\Notes.txt");
string marRes = string.Join(Environment.NewLine, lines.ToArray());
उम्मीद है कि किसी की मदद कर सकते हैं !!!!
उपरोक्त सभी उत्तर नेस्टेड सूचियों के लिए काम नहीं करते हैं।