2013-04-18 26 views
0

說我有這個字符串數組:通過解析字符串數組來檢查多少次,有一個價值

string[] arrayToParse = {2, G, R, G, B}; 

我需要通過陣列來分析,以檢查多少次,是一個字符串出現,以便我最終可能會像這樣的價值觀:

2 
GG 
R 
B 

因此,每個循環檢測是否有另一個字符串相同,他「會連接」的時候,那麼這個值添加到列表中。

如果我再舉一個例子: string[] arrayToParse2 = {2, Q, T, T, U, U} 應該結束了這些值:

2 
Q 
TT 
UU 

任何幫助的人?

+0

你在說這裏的字符串還是Charachters? – CSharpie

+0

字符串,我知道區別。 – hsim

回答

6

使用LINQ(GroupBy法)和string.Join

string[] arrayToParse = {"2", "G", "R", "G", "B"}; 

string[] results = arrayToParse.GroupBy(x => x) 
           .Select(g => string.Join(string.Empty, g)) 
           .ToArray(); 

同時適用於您的樣品輸入。

+0

太快了!我現在就試試看。 – hsim

2

您可以使用LINQ:

var stringGroups = arrayToParse.GroupBy(str => str); 

現在你可以用String.Join顯示這些羣體:

foreach(var group in stringGroups) 
    Console.WriteLine(string.Join("", group)); 
1

我會去的LINQ方法。如果它不可用或者您不想使用它,這裏是一個更長的版本(如果您從未使用過LINQ,則更容易理解)。

string[] arrayToParse = {2, G, R, G, B}; 
List<String> parsedList = new List<String> 

foreach(String sToParse in arrayToParse) 
{ 
    if (parsedList.Count <= 0) 
    parsedList.Add(sToParse); 

    else 
    foreach(String sInParsedList in parsedList) 
    { 
    if(sToParse == sInParsedList) 
     sInParsedList += sToParse; 

    else 
    parsedList.Add(sToParse); 
    } 

string[] parsedArray = parsedList.ToArray(); 
相關問題