2016-12-29 149 views
0

下面是我的字符串數組:如何拆分字符串數組中的字符串?

"categories": [ 
    "electronic,sports", 
    "abc,pqr", 
    "xyz", 
    ] 

輸入

string[] categories = { "electronic,sports", "abc,pqr", "xyz"}; 

現在我想在類分裂的價值觀和

public string[] categories { get; set; } 

現在這個類別中包含類似下面的記錄創建像這樣的記錄,但在類別變量只有

所以最後類別變量應該包含輸出象下面這樣:

"categories": [ 
    "electronic", 
    "sports", 
    "abc", 
    "pqr", 
    "xyz", 
    ] 

所以我想我的循環運行5次;如果我循環到類別變量和進一步很多操作只對這個變量完成,所以我不想在其他變量中獲取最終輸出。

foreach (var category in categories) 
{ 
    //code 
} 
+0

您的輸入是什麼?是JSON的一部分還是其他? –

+3

'categories = categories.SelectMany(o => o.Split(','))。ToArray();'? – har07

+0

@ un-lucky:更新了我的問題以包含示例輸入 –

回答

7

您可以使用LINQ SelectMany()然後投影結果數組:

using System.Linq; 


string[] categories = { "electronic,sports", "abc,pqr", "xyz"}; 
categories = categories.SelectMany(o => o.Split(',')).ToArray(); 

foreach(var c in categories) 
{ 
    Console.WriteLine(c); 
} 

demo

輸出:

electronic 
sports 
abc 
pqr 
xyz 
+0

是的,這工作。謝謝你的善良幫助,請繼續幫助像這樣。再次感謝你:) –

1

這可能做的伎倆爲您

List<string> newcategories = new List<string>(); 
foreach(var category in categories) 
{ 
    if(category.Contains(",")) 
    { 
     string[] c = category.Split(','); 
     newcategories.Add(c[0]); 
     newcategories.Add(c[1]); 
    } 
    else 
    { 
     newcategories.Add(category); 
    } 
} 
+0

對不起,正如我在我的問題中所說的,我不想使用新的變量。我想在我的類別字符串數組中只有 –

2

您可以在不如果代碼嘗試;

 List<string> temps = new List<string>(); 
     foreach (var category in categories) 
     { 
      temps.AddRange(category.Split(',').ToList()); 
     } 
     categories = temps.ToArray(); 
+0

非常感謝您的幫助,並請繼續幫助像這樣:) –

2

沒有linq ...只是使用幾個foreach循環。

 string[] categories = new string[] { "electronic,sports", "abc,pqr", "xyz" }; 

     foreach(var category in categories) 
     { 
      foreach(var item in category.Split(',')) 
      { 
       Console.WriteLine(item); 
      } 
     } 
+0

非常感謝你的幫助,並請繼續幫助像這樣:) –