C# 在相邻字符值不同的段中拆分字符串
这对我来说有点难以解释。如何拆分序列中相邻字符值不同的字符串 换句话说,我的意思是 如果我有以下字符串C# 在相邻字符值不同的段中拆分字符串,c#,string,C#,String,这对我来说有点难以解释。如何拆分序列中相邻字符值不同的字符串 换句话说,我的意思是 如果我有以下字符串wwbbdde,我想将其拆分,以便得到结果 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 : ++grou
wwbbdde
,我想将其拆分,以便得到结果
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();
使用正则表达式有点疯狂:
string text = "wwwbbdddwwwe";
string[] items = Regex.Matches(text, @"(.)\1*")
.OfType<Match>()
.Select(m => m.Value)
.ToArray();
string text=“wwwbdddwwe”;
string[]items=Regex.Matches(文本,@“()\1*”)
第()类
.选择(m=>m.Value)
.ToArray();
使用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();
使用正则表达式有点疯狂:
string text = "wwwbbdddwwwe";
string[] items = Regex.Matches(text, @"(.)\1*")
.OfType<Match>()
.Select(m => m.Value)
.ToArray();
string text=“wwwbdddwwe”;
string[]items=Regex.Matches(文本,@“()\1*”)
第()类
.选择(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();
char lastChar=默认值(char);
列表结果=新列表();
foreach(inputString中的var c)
{
如果(c!=lastChar)
结果.添加(新列表());
result.Last().Add(c);
lastChar=c;
}
var r=result.Select(p=>newstring(p.ToArray())).ToList();
可能的解决方案之一:
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();
char lastChar=默认值(char);
列表结果=新列表();
foreach(inputString中的var c)
{
如果(c!=lastChar)
结果.添加(新列表());
result.Last().Add(c);
lastChar=c;
}
var r=result.Select(p=>newstring(p.ToArray())).ToList();
是的,这是可能的。它可能涉及一个循环和一个结果列表。若字符串是WWWBBDDDE呢?预期结果www b ww b ddd e?是的…我想我将只使用一个列表和一个循环…这可能是最好的…谢谢,这是可能的。它可能涉及一个循环和一个结果列表。若字符串是WWWBBDDDE呢?预期结果www b ww b ddd e?是的…我想我将只使用一个列表和一个循环…这可能是最好的…谢谢