2012-12-06 15 views
26

मैं string को गिनना चाहता हूं और इसके बजाय chars लौटा रहा हूं, मैं इसे string प्रकार का पुनरावर्तक चर होना चाहता हूं। संभवतः यह संभव नहीं है कि पुनरावृत्ति प्रकार string हो, तो इस स्ट्रिंग के माध्यम से पुन: प्रयास करने का सबसे प्रभावी तरीका क्या है?मैं एक सिंगल को स्ट्रिंग में कैसे परिवर्तित करूं?

क्या मुझे लूप के प्रत्येक पुनरावृत्ति के साथ एक नया string ऑब्जेक्ट बनाने की आवश्यकता है या क्या मैं किसी भी तरह का कलाकार कर सकता हूं?

String myString = "Hello, World"; 
foreach (Char c in myString) 
{ 
    // what I want to do in here is get a string representation of c 
    // but I can't cast expression of type 'char' to type 'string' 
    String cString = (String)c; // this will not compile 
} 

उत्तर

32

का प्रयोग करें .ToString() विधि

String myString = "Hello, World"; 
foreach (Char c in myString) 
{ 
    String cString = c.ToString(); 
} 
+2

सीएलआर प्रकारों के बजाय सी # प्रकार 'स्ट्रिंग' और 'char' का उपयोग करने पर विचार करें। अंत में वही है लेकिन सी # में तर्कसंगत रूप से अधिक सही है। – andleer

+0

@andleer आप सही हैं, मैंने अभी टूस्टिंग विधि दिखाने के लिए ओपी के उदाहरण कोड को संशोधित किया है। –

+1

टिप्पणी उस पर निर्देशित की गई थी, न कि आप। कोई चिंता नहीं। – andleer

4

ऐसा लगता है कि ऐसा करने के लिए स्पष्ट बात यह है:

String cString = c.ToString() 
+10

मुझे लगता है कि आपने अपने प्रश्न का उत्तर दिया है। – seand

1

चार से एक नई स्ट्रिंग बनाएँ।

String cString = new String(new char[] { c }); 

या

String cString = c.ToString(); 
-1

आप की कोशिश की:

String s = new String(new char[] { 'c' });

+1

कोई सीटीओ नहीं है जो सिर्फ –

+0

माफ कर देता है, संपादित और परीक्षण – trebuchet

5

आपके पास दो विकल्प हैं। string ऑब्जेक्ट बनाएं या ToString विधि पर कॉल करें।

String cString = c.ToString(); 
String cString2 = new String(c, 1); // second parameter indicates 
            // how many times it should be repeated 
1

एक विस्तार विधि बनाएं:

public static IEnumerable<string> GetCharsAsStrings(this string value) 
{ 
    return value.Select(c => 
      { 
       //not good at all, but also a working variant 
       //return string.Concat(c); 

       return c.ToString(); 
      }); 
} 

और तार के माध्यम से लूप:

string s = "123456"; 
foreach (string c in s.GetCharsAsStrings()) 
{ 
    //... 
} 
+0

वाह यह इतना गुंजाइश है ... –

0

क्यों नहीं इस कोड को? क्या यह तेज़ नहीं होगा?

string myString = "Hello, World"; 
foreach(char c in myString) 
{ 
    string cString = new string(c, 1); 
} 
1
सी # 6 प्रक्षेप के साथ

:

char ch = 'A'; 
string s = $"{ch}"; 

यह कुछ बाइट्स shaves। :)