0

この文字列の配列があるとします:

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

次のような値になるように、配列を解析して文字列が何回存在するかを確認する必要があります。

2
GG
R
B

したがって、ループが別の同一の文字列があるかどうかを検出するたびに、彼は「連結」し、値をリストに追加します。

別の例を挙げる string[] arrayToParse2 = {2, Q, T, T, U, U} と、次の値になるはずです。

2
Q
TT
UU

誰でも助けてくれますか?

4

3 に答える 3

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

両方のサンプル入力で機能します。

于 2013-04-18T15:10:58.027 に答える
2

Linq を使用できます。

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

String.Joinこれらのグループを次のように表示できます。

foreach(var group in stringGroups)
    Console.WriteLine(string.Join("", group));
于 2013-04-18T15:12:47.927 に答える
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();
于 2013-04-18T15:17:47.753 に答える