如何将单个字符串转换为字符串?

问题描述 投票:37回答:10

我想列举一个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
}
c# string casting char
10个回答
51
投票

使用.ToString()方法

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

0
投票

可能不可能将迭代类型设为字符串

当然是啦:

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

其他答案中的任何建议都可以替代c.ToString()。可能最小的头发效率是c => new string(c, 1),这是char.ToString()可能在引擎盖下做的。


7
投票

你有两个选择。创建一个string对象或调用ToString方法。

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

5
投票

使用C#6插值:

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

这刮了几个字节。 :)


4
投票

似乎显而易见的事情是:

String cString = c.ToString()

2
投票

从char创建一个新字符串。

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

要么

 String cString = c.ToString();

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

0
投票

你试过了吗:

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


0
投票

为什么不用这个代码?会不会更快?

string myString = "Hello, World";
foreach( char c in myString )
{
    string cString = new string( c, 1 );
}
© www.soinside.com 2019 - 2024. All rights reserved.