2012-12-06 41 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

考慮使用C#類型'string'和'char'來代替CLR類型。最後相同,但可以說在C#中更正確。 – andleer

+0

@andleer你是對的,我剛剛修改了OP的示例代碼來顯示ToString方法。 –

+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

有沒有ctor,只需char –

+0

對不起,編輯和測試 – trebuchet

0
String cString = c.ToString(); 
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

用C#6內插:

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

這刮鬍子幾個字節。 :)