2016-12-29 1 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 번 실행 내 루프를 원하는; 변수를 범주 변수로 루프하면 더 많은 작업이이 변수에서만 수행되므로 다른 변수의 최종 출력보다 위의 값을 가져 가고 싶지 않습니다. 코드 경우

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

귀하의 의견은 무엇입니까? 그것은 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> temps = new List<string>(); 
     foreach (var category in categories) 
     { 
      temps.AddRange(category.Split(',').ToList()); 
     } 
     categories = temps.ToArray(); 
+0

죄송합니다. 내 질문에 새 변수를 사용하고 싶지 않습니다. 내 범주 문자열 배열에만 사용하십시오. –

2

당신은없이 시도 할 수 있습니다에 대한

foreach (var category in categories) 
{ 
    //code 
} 
+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

도움을 주셔서 대단히 감사하고 계속 도와주세요. :) –

관련 문제