将字符串分割成相邻字符值不同的段
本文关键字:字符 字符串 分割 | 更新日期: 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();