60

我想枚举 astring而不是它返回chars我想让迭代变量是 type string。这可能不可能让迭代类型成为 astring那么迭代这个字符串的最有效方法是什么?

我是否需要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

你有两个选择。创建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 回答
7

使用 C# 6 插值:

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

这会减少几个字节。:)

于 2017-07-23T09:54:19.803 回答
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 回答
0

为什么不是这段代码?不会更快吗?

string myString = "Hello, World";
foreach( char c in myString )
{
    string cString = new string( c, 1 );
}
于 2016-09-30T17:10:26.317 回答
0

可能不可能让迭代类型成为字符串

是的:

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

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

于 2018-11-10T21:25:24.970 回答
0

您可以将 + 与空字符串一起使用"",请检查以下代码:

char a = 'A';
//a_str is a string, the value of which is "A".
string a_str = ""+a;
于 2019-08-26T02:11:14.967 回答