在c#中的每个char之后插入一个逗号

Joe*_*Joe 10 c#

我需要一种方法在字符串中的每个字符后插入逗号.例如,如果我有字母串

"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
Run Code Online (Sandbox Code Playgroud)

我需要这样做,所以在从A到Z的每个字母之后都有一个逗号,我想保留字符串,而不是将它转换为字符数组或类似的东西.我不知道这是否可能,但它只是想要避免的东西.

我怎样才能做到这一点?最终结果应该是这样的:

"A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z,"
Run Code Online (Sandbox Code Playgroud)

谢谢

SLa*_*aks 22

在.Net 4中:

str = String.Join<char>(",", str) + ",";
Run Code Online (Sandbox Code Playgroud)

.Net 4.0增加了一个String.Join需要的重载IEnumerable<T>.
此代码通过String转换来调用它IEnumerable<char>.

我需要显式指定泛型类型参数,否则它将调用params string[]重载(使用单个string).


Jon*_*eet 14

那么你必须做一些事来生成新的字符串.最简单的方法可能是在.NET 4中:

// string.Join won't put the trailing comma
string result = string.Join(",", (IEnumerable<char>) input) + ",";
Run Code Online (Sandbox Code Playgroud)

要么

string result = string.Join<char>(",", input) + ",";
Run Code Online (Sandbox Code Playgroud)

或者在.NET 3.5中,我们想要的重载不存在:

// string.Join won't put the trailing comma
string result = string.Join(",", input.Select(c => c.ToString())
                                      .ToArray()) + ",";
Run Code Online (Sandbox Code Playgroud)

如果这些对您来说效率不高,您可以随时手动完成:

StringBuilder builder = new StringBuilder(input.Length * 2);
foreach (char c in input)
{
    builder.Append(c);
    builder.Append(',');
}
string result = builder.ToString();
Run Code Online (Sandbox Code Playgroud)