Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在相邻字符值不同的段中拆分字符串_C#_String - Fatal编程技术网

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?是的…我想我将只使用一个列表和一个循环…这可能是最好的…谢谢