C# 在c中的每个字符后插入逗号#

C# 在c中的每个字符后插入逗号#,c#,C#,我需要一种在字符串中的每个字符后插入逗号的方法。举个例子,如果我有一串字母 "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 我需要这样做,从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," 感谢.Net 4中的: str = String.Join&l

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

"ABCDEFGHIJKLMNOPQRSTUVWXYZ"
我需要这样做,从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,"
感谢.Net 4中的:

str = String.Join<char>(",", str) + ",";
str=String.Join(“,”,str)+“,”;
.Net 4.0添加了一个
字符串.Join
重载,该重载接受
IEnumerable

此代码调用它时,将
String
强制转换为
IEnumerable

我需要显式地指定泛型类型参数,否则它将调用
params string[]
重载(使用单个
string
)。最简单的方法可能是在.NET 4中:

// string.Join won't put the trailing comma
string result = string.Join(",", (IEnumerable<char>) input) + ",";
如果这些对您来说不够有效,您可以随时手动执行:

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

一个正则表达式的替换可能会起作用。正则表达式可以简单为
([A-Z])
,并用匹配项加上、。我得想办法做这件事

请看这里

字符串.Join
重载仅存在于.NET 4.0中;如果您使用的是早期版本,则可以改为:

string InsertCommasBetweenChars(string s)
{
    return string.Join(",", Array.ConvertAll(s.ToCharArray(), c => c.ToString()));
}

您可以使用for循环并逐字符移动字符,然后可以将当前字符附加到
StringBuilder
并添加逗号

循环完成后,您可以返回
StringBuilder.ToString()
,或者将其分配给原始字符串变量(如果不需要将其保持原样)。

这应该可以工作

var input = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var result= String.Join(",", input.ToCharArray(0,input.Length));

我知道您不想要字符数组,但这是如何解决的:

Console.WriteLine(string.Join(",", "abc".ToCharArray()));
在这里,抓取一些:


它的可读性不如.Join,但更灵活。

您可以避免使用数组、StringBuilder或类似的东西,因为字符串是只读的。既然他们是朋友,为什么要逃避呢+1,最后一种方法(手动方法)在3727毫秒内执行10000000次,而
String.Join(“,”,str)
需要10543毫秒
String.Concat(str.Select(c=>c+”,”)
要快得多。他要逗号。
string InsertCommasBetweenChars(string s)
{
    return string.Join(",", s.ToCharArray());
}
string InsertCommasBetweenChars(string s)
{
    return string.Join(",", Array.ConvertAll(s.ToCharArray(), c => c.ToString()));
}
var input = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
var result= String.Join(",", input.ToCharArray(0,input.Length));
Console.WriteLine(string.Join(",", "abc".ToCharArray()));
var result = "ABCDEFG".Aggregate("", (c, n) => c+ ("," + n)).Substring(1);