你的代码太复杂了。应该简化一下public static IEnumerable<string> GetSubStringArray(string s) { var array = new List<char>(); foreach(var c in s) { if (array.Count != 0 && c != array[array.Count - 1]) { yield return new string(array.ToArray()); array.Clear(); } array.Add(c); } yield return new string(array.ToArray()); }
private static string[] GetSubStringArray(string inputString) { List<string> result = new List<string>() { "" }; inputString.Aggregate(inputString[0], (a, b) => { if (a == b) result[result.Count - 1] += b.ToString(); else result.Add(b.ToString()); return b; }); return result.ToArray(); }
private static IEnumerable<string> getSubStringArray(string inputString) { return from c in inputString group c by c into g select string.Join("", g.ToArray()); }
{
string str = "aabcdddefggg";
var matches = Regex.Matches(str, @"([a-zA-Z])\1*");
foreach (Match item in matches)
{
Console.WriteLine(item.Value);
}
Console.ReadKey();
}
你的代码太复杂了。应该简化一下public static IEnumerable<string> GetSubStringArray(string s)
{
var array = new List<char>();
foreach(var c in s)
{
if (array.Count != 0 && c != array[array.Count - 1])
{
yield return new string(array.ToArray());
array.Clear();
}
array.Add(c);
}
yield return new string(array.ToArray());
}
{
List<string> result = new List<string>() { "" };
inputString.Aggregate(inputString[0], (a, b) => { if (a == b) result[result.Count - 1] += b.ToString(); else result.Add(b.ToString()); return b; });
return result.ToArray();
}
private static IEnumerable<string> getSubStringArray(string inputString)
{
return from c in inputString
group c by c into g
select string.Join("", g.ToArray());
}