【问题标题】:Convert a string array to a concatenated string in C#在 C# 中将字符串数组转换为串联字符串
【发布时间】:2009-08-20 09:20:24
【问题描述】:

有没有一种简单的方法可以将字符串数组转换为串联字符串?

例如,我有一个字符串数组:

new string[]{"Apples", "Bananas", "Cherries"};

我想得到一个字符串:

"Apples,Bananas,Cherries"

"Apples&Bananas&Cherries""Apples\Bananas\Cherries"

【问题讨论】:

    标签: c# arrays string


    【解决方案1】:

    一个简单的...

    string[] theArray = new string[]{"Apples", "Bananas", "Cherries"};
    string s = string.Join(",",theArray);
    

    【讨论】:

    • 嘿,我真的知道。今天办公室很热,我还没有喝咖啡!谢谢。
    • 虽然感觉有点奇怪。它认为它更多的是对数组的操作而不是对字符串的操作,因此我在数组类中寻找这样的函数会更“自然”。但是谢谢,我不知道有这样一种方法可以加入 string[] (所以不再用于构造)! +1
    • 但它只适用于string[],而不适用于任何其他人——因此它不完全适合“常规”数组实现。但您可以将其作为 C# 3.0 扩展方法 添加到 this string[].
    • 为什么只能使用 string[] 而不能使用任何类型的数组。我认为可以只使用数组中对象的 ToString() 方法(至少我会这样做),因此您还可以加入整数、长整数甚至复杂对象的数组(甚至是您自己的对象)实现 ToString)。我不知道其他语言是如何解决这个问题的,但是因为它不在数组类中,所以我从未注意到它(并且创建一个 for 比在互联网上进行研究要快)。
    • 然后写一个Join<T>(this T[] array)扩展方法;-p
    【解决方案2】:

    显而易见的选择当然是 String.Join 方法。

    这是一个 LINQy 替代方案:

    string.Concat(fruit.Select((s, i) => (i == 0 ? "" : ",") + s).ToArray())
    

    (因为它与 Join 方法的作用相同,所以并没有真正有用,但可能用于扩展该方法无法到达的地方,例如交替分隔符......)

    【讨论】:

      【解决方案3】:
      【解决方案4】:

      你可以使用Aggregate,它在一个序列上应用一个累加器函数。

      string[] test = new string[]{"Apples", "Bananas", "Cherries"};
      char delemeter = ',';
      string joinedString = test.Aggregate((prev, current) => prev + delemeter + current);
      

      【讨论】:

        猜你喜欢
        • 2018-03-08
        • 2021-05-09
        • 1970-01-01
        • 2016-11-20
        • 2011-06-18
        相关资源
        最近更新 更多