web-dev-qa-db-ja.com

単一の文字を文字列に変換するにはどうすればよいですか?

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
}
41
Ian R. O'Brien

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

String myString = "Hello, World";
foreach (Char c in myString)
{
    String cString = c.ToString(); 
}
59
Mark Hall

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

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

C#6補間の場合:

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

これにより、数バイトが削られます。 :)

5
sean

明らかなことはこれだと思われます:

String cString = c.ToString()
4
Ian R. O'Brien

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

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

または

 String cString = c.ToString();
2
Michael G

拡張メソッドを作成します。

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())
{
    //...
}
1
horgh

試しましたか:

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

0
trebuchet
String cString = c.ToString();
0
Jeroen

空の文字列""で+を使用できます。以下のコードを確認してください。

char a = 'A';
//a_str is a string, the value of which is "A".
string a_str = ""+a;
0
Alex

おそらく、反復型を文字列にすることはできません

もちろんそうだ:

_foreach (string str in myString.Select(c => c.ToString())
{
...
}
_

c.ToString()の代わりに他の回答の提案を使用できます。おそらく、小さな髪で最も効率的なのはc => new string(c, 1)であり、これはおそらくchar.ToString()が内部で行うことです。

0
Jim Balter

このコードはなぜですか?速くなりませんか?

string myString = "Hello, World";
foreach( char c in myString )
{
    string cString = new string( c, 1 );
}
0
user1489240