.NET / C # - स्ट्रिंग में परिवर्तित करें []


406

char[]एक स्ट्रिंग में मोड़ने का उचित तरीका क्या है ?

ToString()पात्रों में से एक सरणी से विधि चाल नहीं करता है।

जवाबों:


676
char[] chars = {'a', ' ', 's', 't', 'r', 'i', 'n', 'g'};
string s = new string(chars);

12
ध्यान दें कि new string(null)पैदावार String.Emptyऔर नहीं null ! यदि आप रखना चाहते हैं null, तो आप एक विस्तार विधि बना सकते हैं static string ToStringSafe(this char[] buf) { return buf == null ? null : new string(buf); }
स्कॉड

8
@Skod: यह देखकर कि "नई" अभिव्यक्ति के लिए एक वस्तु उदाहरण के अलावा एक मूल्य वापस करना असंभव है, जो किसी को भी आश्चर्यचकित नहीं करना चाहिए।
मत्ती वीरकुंकेन

@MattiVirkkunen: एक अपवाद को फेंकना भी एक उचित काम है। यही वह व्यवहार है जो मैंने स्ट्रिंग कंस्ट्रक्टर को अशक्त करने के लिए अनुमान लगाया होगा।
चार्ल्स टेलर

81

स्ट्रिंग के निर्माता का उपयोग करें जो एक चार को स्वीकार करता है []

char[] c = ...;
string s = new string(c);

54
यदि आप केवल तीन मिनट तेज थे, तो सवाल पूछने से पहले आपने उत्तर दिया होगा!
डीसीस्टेनहोलज़

1
मिनट भूल जाते हैं। यह सिर्फ 17 सेकंड है। मेरे उत्तर के ठीक ऊपर मेरा दूसरा उच्च-साइट साइट पर मतदान का उत्तर है। वास्तव में मैं अब यहाँ हूँ क्योंकि किसी ने इसे फिर से मतदान किया, लगभग 10 साल बाद। और दो जवाब वास्तव में कोई अलग नहीं हैं ... लेकिन मेरा 17 सेकंड तेजी से पोस्ट किया गया था, और इसका मतलब है कि 500 ​​वोट अंतर: /
जोएल कोएहॉर्न


28

एक अन्य तरीका:

char[] chars = {'a', ' ', 's', 't', 'r', 'i', 'n', 'g'};
string s = string.Join("", chars);
//we get "a string"
// or for fun:
string s = string.Join("_", chars);
//we get "a_ _s_t_r_i_n_g"

string.Joinके string[]बजाय केवल स्वीकार करता हैchar[]
8:91 पर आकाश91

@ Sky91 न केवल, आप String.Join <T> मेथड और किसी भी T [] को पैरामीटर के रूप में उपयोग कर सकते हैं, T.ToString () कहा जाएगा
वीर्य

1
तब आपको string.Join<char>("_", chars)इसके बजाय लिखना चाहिएstring.Join("_", chars)
Sky91

2
कंपाइलर इसे स्वचालित रूप से करता है क्योंकि संकलन समय पर चार्ट प्रकार ज्ञात किया जाता है।
वीर्य

यह अजीब है क्योंकि मुझे संकलन त्रुटि मिलती है अगर मैं टाइप नहीं करता हूं <char>
sky91


15

स्ट्रिंग कंस्ट्रक्टर का उपयोग करें जो कि करारे को तर्क के रूप में स्वीकार करता है, स्थिति और सरणी की लंबाई शुरू करता है। सिंटैक्स नीचे दिया गया है:

string charToString = new string(CharArray, 0, CharArray.Count());

मुझे लगता है कि मैं यही चाह रहा था। लेकिन मुझे किसी भी वर्ग का पता नहीं था जिसका नाम चारअरे है। क्या आपका मतलब कुछ इस तरह था:char[] charArray = new char[5] { 'a', 'b', 'c', '\0', '\0' }; string charsAsString = new string(charArray, 0, 3); // only want part of array.
Suncat2000

CharArray वर्ग नहीं है, बस टाइप चर का चर []
दिलीप नानवोर

13

एक और विकल्प

char[] c = { 'R', 'o', 'c', 'k', '-', '&', '-', 'R', 'o', 'l', 'l' };
string s = String.Concat( c );

Debug.Assert( s.Equals( "Rock-&-Roll" ) );
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.