C#string.Join有多个分隔符

时间:2011-03-25 09:20:45

标签: c# string

我搜索了谷歌和所有其他链接,但无法确定这是否可行。

string.Join方法链接http://msdn.microsoft.com/en-us/library/system.string.join.aspx

Join(String, String[]),我知道第一个参数(String)是分隔符,第二个参数(String[])是我们想要加入的数组。是否可以使用2个不同的字符串/分隔符加入它? 例如我的数组>

array[0] = A;
array[1] = Alpha; 
array[2] = B; 
array[3] = Bravo;

最终产品比如:

A = Alpha, B= Bravo, 

所以它将是2个字符串,“=”和“,”。有什么建议吗?

7 个答案:

答案 0 :(得分:3)

您需要成对地对值进行分组,在每对上使用string.Join(或只使用key + " = " + value),然后在结果上使用string.Join

String.Join不支持此功能。

或者,您可以编写自己的循环来执行此操作。

答案 1 :(得分:3)

UPADTED:两个代码,如果你不希望,结束。

您可以这样做,但建议配对keyvalue或使用二维数组。

代码:

int i=0;
string str = "";
var arr = new string[] { "A", "Alpha", "B", "Bravo" };

foreach (var item in arr)
 {
    str += item;
    if (i < arr.Length-1)
    {
       if (i % 2 == 0)                
         str += " = ";               
       else
         str += ", ";          
    }
    i++;
 }
//output: A = Alpha, B = Bravo

<小时/>

通过这种方式,您还可以使用多个分隔符。

示例:

int i=0;
string str = "";
var arr = new string[] { "A", "Alpha", "1", "B", "Bravo", "2" };

var delimiters = new string[] { " = ", ", ", ":" };

foreach (var item in arr)
 {
    str += item;
    if (i < arr.Length-1)
    {
        if (i % 3 == 0)
           str += delimiters[0];
        else if (i % 3 == 1)
           str += delimiters[1];                        
        else
           str += delimiters[2];                        
     }
     i++;
 }
//output: A = Alpha:1, B = Bravo:2

答案 2 :(得分:1)

我认为这不可行。您可以在Join,然后循环,并用,替换所有其他=

答案 3 :(得分:1)

这种扩展方法可以解决这个问题:

public static class Extensions
{
    public static string Join(this object[] array, string[] delimiters)
    {
        var returnString = "";
        var s = new Queue<string>(delimiters);
        for (var i = 0; i < array.Count(); i++)
        {
            var delim = s.Dequeue();
            returnString += array[i] + delim;
            s.Enqueue(delim);
        }
        while (s.Count > 0) returnString = returnString.TrimEnd(s.Dequeue().ToCharArray());
        return returnString;

    }
}

然后您可以使用array.Join(new string[] {"=", ","}) extension-method在分隔符之间交替。

希望有所帮助!

答案 4 :(得分:0)

 StringBuilder output = new StringBuilder();

 for(int i = 0; i <= array.length; i++)
 {
         output.Append(array[i] + "=" + array[i+1]);
         if(i != array.length) output.Append(",");
 }

 Response.Write(output.ToString());

答案 5 :(得分:0)

希望这是你正在寻找的东西;)

string[] str = { "A", "Alpha", "B", "Beta" };
string[] dl = { " = ", ", " };
string result = "";
for (int i = 0; i < str.Length; i++)
{
    result += str[i] + dl[0] + str[i + 1];
    if(i != str.Length - 2){
        result += dl[1];
    }
    i++;
}
return result;

^^

答案 6 :(得分:0)

@javed with 代码更简单一些

            for (int i = 0; i < query.Length; i++)
            {
                endpoint += query[i];

                if (i < query.Length - 1)
                {
                    if (i % 2 == 0)
                        endpoint += "=";
                    else
                        endpoint += "&";
                }
            }