将字符串分割成相邻字符值不同的段

本文关键字:字符 字符串 分割 | 更新日期: 2023-09-27 18:01:24

这对我来说有点难以解释。如何分割序列中相邻字符值不同的字符串?

也就是说……我的意思是……

如果我有以下字符串wwwbbddde,我想分割它,使结果是

www
bb
ddd
e

这是可能的吗

亲切的问候

将字符串分割成相邻字符值不同的段

使用LINQ

string text = "wwwbbdddwwwe";
int group = 0;
string[] items = text.Select((c, i) => new { c, g = i == 0 ? 0 : c == text[i - 1] ? group : ++group })
                     .GroupBy(p => p.g)
                     .Select(p => new string(p.Select(t => t.c).ToArray()))
                     .ToArray();

还有一点疯狂的regex:

string text = "wwwbbdddwwwe";
string[] items = Regex.Matches(text, @"(.)'1*")
                      .OfType<Match>()
                      .Select(m => m.Value)
                      .ToArray();

一个可能的解决方案:

        char lastChar = default(char);
        List<List<char>> result = new List<List<char>>();
        foreach (var c in inputString)
        {
            if(c != lastChar)
                result.Add(new List<char>());
            result.Last().Add(c);
            lastChar = c;
        }
        var r = result.Select(p => new string(p.ToArray())).ToList();