如何高效地使用逗号分隔符

sha*_*mim 0 c# string

我在C#上工作.我有一个阵列.要分隔数组项,我需要使用逗号.我做到了,但我认为它效率不高.怎么做,没有if条件?请不要使用替换方法.我的语法如下.

string container = "";
string[] s = "Hellow world how are you".Split(' ');
foreach (string item in s)
{
    if (container == "")
    {
        container += item;
    }
    else
    {
        container += "," + item;
    }
}
Run Code Online (Sandbox Code Playgroud)

我必须继续循环.我只想要下面的类型解决方案.

string container = "";
string[] s = "Hellow world how are you".Split(' ');
foreach (string item in s)
{
    container += "," + item;
}
Run Code Online (Sandbox Code Playgroud)

提前致谢.如有任何疑问请咨询.

Jon*_*ood 13

用于使用String.Join逗号分隔符连接数组.

string[] s = "Hello world how are you".Split(' ');
string container = String.Join(",", s);
Run Code Online (Sandbox Code Playgroud)

此外,如果您想在此网站上获得帮助,我建议您开始接受一些答案.


Ant*_*ram 5

你的问题不是if声明.您的问题是,在循环中执行字符串连接和其他操作通常是糟糕的形式和不良做法.该string班是不变的,变化正在创造新的字符串,分配新的内存,等等.因此,这种做法是缓慢,效率低下,远远超过你的if陈述会.循环的迭代次数越多,您就越会注意到效率低下.

您应该熟悉这个StringBuilder类,它允许您在string不重复分配新对象的情况下执行a的有效操作.它在像你这样的循环中特别有用.

使用a的示例StringBuilder如下所示

StringBuilder builder = new StringBuilder();
foreach (string item in array)
{
    if (builder.Length != 0) builder.Append(",");
    builder.Append(item);
}

string finalOutput = builder.ToString();
Run Code Online (Sandbox Code Playgroud)

话虽如此,string.Join它也是您正在执行的串联类型的强大工具.