假设我有这个字符串数组:
string[] arrayToParse = {2, G, R, G, B};
我需要解析数组以检查字符串存在多少次,以便最终得到如下值:
2
GG
R
B
因此,每次循环检测是否有另一个相同的字符串时,他都会“连接”,然后将值添加到列表中。
如果我再举一个例子:
string[] arrayToParse2 = {2, Q, T, T, U, U}
应该以这些值结束:
2
Q
TT
UU
有什么帮助吗?
假设我有这个字符串数组:
string[] arrayToParse = {2, G, R, G, B};
我需要解析数组以检查字符串存在多少次,以便最终得到如下值:
2
GG
R
B
因此,每次循环检测是否有另一个相同的字符串时,他都会“连接”,然后将值添加到列表中。
如果我再举一个例子:
string[] arrayToParse2 = {2, Q, T, T, U, U}
应该以这些值结束:
2
Q
TT
UU
有什么帮助吗?
使用 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();
适用于您的两个样本输入。
您可以使用 Linq:
var stringGroups = arrayToParse.GroupBy(str => str);
现在您可以使用以下命令显示这些组String.Join
:
foreach(var group in stringGroups)
Console.WriteLine(string.Join("", group));
我会采用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();