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

Posted

技术标签:

【中文标题】如何将单个字符转换为字符串?【英文标题】:How do I convert a single char to a string? 【发布时间】:2012-11-24 01:27:36 【问题描述】:

我想枚举一个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

【问题讨论】:

【参考方案1】:

使用 .ToString() 方法

String myString = "Hello, World";
foreach (Char c in myString)

    String cString = c.ToString(); 

【讨论】:

考虑使用 C# 类型 stringchar 而不是 CLR 类型。最终相同,但可以说在 C# 中更正确。 @andleer 你说得对,我只是修改了 OP 的示例代码以显示 ToString 方法。 评论是针对他的,不是针对你的。不用担心。 @tom_mai78101,再次查看问题我想我在抱怨没有一个答案可以解释为什么将char 转换为string 不起作用或显然无法编译。 似乎可以,但是为什么我们不能直接使用内置的句法方式来进行显式转换呢?例如string s = (string) c【参考方案2】:

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

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

【讨论】:

【参考方案3】:

使用 C# 6 插值:

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

这会减少几个字节。 :)

【讨论】:

【参考方案4】:

似乎显而易见的事情是这样的:

String cString = c.ToString()

【讨论】:

【参考方案5】:

从 char 创建一个新字符串。

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

 String cString = c.ToString();

【讨论】:

【参考方案6】:

创建扩展方法:

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())

    //...

【讨论】:

【参考方案7】:
String cString = c.ToString();

【讨论】:

【参考方案8】:

你试过了吗:

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

【讨论】:

没有只需要 char 的 ctor【参考方案9】:

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

string myString = "Hello, World";
foreach( char c in myString )

    string cString = new string( c, 1 );

【讨论】:

【参考方案10】:

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

没错:

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

...

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

【讨论】:

【参考方案11】:

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

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

【讨论】:

以上是关于如何将单个字符转换为字符串?的主要内容,如果未能解决你的问题,请参考以下文章

如何将切片字符串中的单个字符转换为 Python 中的整数?

如何将包含逗号分隔的 json 值的单个字符串转换为单个 json 对象?

如何将 UTF8 组合字符转换为 ruby​​ 中的单个 UTF8 字符?

将字符向量转换为单个字符串[重复]

如何将用户输入的字符串转换为输入中单个字母的数组? [复制]

如何将 stringstream 十六进制字符串字符对转换为单个 uint8_t 等效二进制值