60

a を列挙したいのですstringが、それを返す代わりにchars、反復変数を type にしたいと思います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
}
4

11 に答える 11

79

.ToString() メソッドを使用する

String myString = "Hello, World";
foreach (Char c in myString)
{
    String cString = c.ToString(); 
}
于 2012-12-06T03:32:24.737 に答える
12

2 つのオプションがあります。stringオブジェクトを作成するか、ToStringメソッドを呼び出します。

String cString = c.ToString();
String cString2 = new String(c, 1); // second parameter indicates
                                    // how many times it should be repeated
于 2012-12-06T03:35:29.390 に答える
5

やるべきことは明らかです:

String cString = c.ToString()
于 2012-12-06T03:31:33.553 に答える
4

char から新しい文字列を作成します。

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

また

 String cString = c.ToString();
于 2012-12-06T03:31:45.827 に答える
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())
{
    //...
}
于 2012-12-06T03:53:29.790 に答える
0

試しましたか:

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

于 2012-12-06T03:32:26.203 に答える
0
String cString = c.ToString();
于 2012-12-06T03:32:30.013 に答える