如何在 C# 中的 string.join 中使用不同的分隔符

  • 本文关键字:分隔符 join 中的 string c#
  • 更新时间 :
  • 英文 :


我试图编写一个简单的代码,该代码采用字符串数组并将其与 2 个交替的不同分隔符连接起来。我正在寻找的是如果我有和数组:

string[] myArray = new string[] {"apples","five","bananas","six","cherries","seven"};

我想得到一个字符串,例如:

苹果=5,香蕉=6,樱桃=7

它不必只使用一种方法,但数组长度可能会有所不同。谢谢。

int i = 0;
var result = String.Join(",",myArray.GroupBy(x=>i++/2).Select(g=>String.Join("=",g)));

编写自己的版本:

string Merge(string sep1, string sep2, params string[] items)
{
    string result = "";
    for(int i = 0; i < items.Length - 1; i++)
    {
        result += items[i] + (i % 2 == 0 ? sep1 : sep2);
    }
    //add the last item
    result += items[items.Length - 1];
    return result;
}

你可以像这样使用:

string result = Merge("=", ",", myArray);

您可以使用此函数:

string GetJoinString(string[] data) {
    var ret = new StringBuilder();
    for (var i = 0; i < data.Count; i++) {
        var separator = i % 2 == 0 ? '=' : ',';
        ret.Append(data[i] + separator);    
    }
    return ret.ToString();
}
var myArray = new string[] { "apples", "five", "bananas", "six", "cherries", "seven" };
var result = "";
for (var index = 0; index < myArray.Length; index = index + 2)
{
    result += string.Format("{0}={1}{2}", myArray[index], myArray[index + 1],
        index < myArray.Length - 2 ? "," : "");
}
return result;

您可以尝试使用

例如
var res = myArray.Aggregate((current, next) => current + (Array.IndexOf(myArray, next) % 2 == 0 ? ",": "=") + next);

或者没有在数组中搜索,它可以是

int index = 0;
var res = myArray.Aggregate((current, next) => current + (index++ % 2 == 0 ? "=": ",") + next);

最新更新