2011-03-25 29 views
0

我通過谷歌和所有其他鏈接搜索,但無法找出這是否可能。C#string.Join與多個分隔符

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名的字符串, 「=」 與 「」。任何建議要做到這一點?

+4

你有沒有考慮是否要重新設計你的陣列分成兩二維數組?根據你提供的數據來看,它看起來並不適合它是目前的一維結構。 – 2011-03-25 09:25:25

回答

3

已過期:兩個代碼如果你不想要,結束。

你可以這樣做,但建議配對keyvalue或使用2維數組。

CODE:

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 
+0

如果在最終輸出中我不想擁有,?我應該如何編輯代碼?我嘗試了很多方法,但不是很成功。 – New27 2011-03-25 11:17:53

1

我不認爲這是可能的。您可以在,上只需Join,然後循環並用=替換每一個其他,

3

您需要將兩個值進行成對分組,或在每對上使用string.Join(或僅使用key + " = " + value),然後在結果上使用string.Join

String.Join不支持此功能開箱即用。

另外,你可以寫你自己的循環來做到這一點。

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()); 
+0

編輯允許這一點。 – 2011-03-25 09:36:17

+0

如果最後一項「,」需要輸入最後一項,那麼是,取出if語句 - 但如果「A = Alpha,B = Bravo」需要回顯,則上述代碼將達到所需效果。 – 2011-03-25 09:42:50

+1

請先測試一下,我發現至少有3個錯誤。我認爲你需要i + = 2以及for和if中的不同條件。 – 2011-03-25 09:46:23

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[] {"=", ","}) 分隔符之間的延伸法交替。

希望有幫助!

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; 

^^