当前位置: 代码迷 >> C# >> 字符串处理的一个有关问题
  详细解决方案

字符串处理的一个有关问题

热度:80   发布时间:2016-05-05 04:56:53.0
字符串处理的一个问题
我在C#里遇到一个问题传过去的字符串为
str="101|A|106=B|106=C|107|D"    就是一个ID对应一个选择答案,当是多选的时候就会有2个或多个106=B这样的格式。

现在我想将这个字符串处理成
str="101|A|106=B,C|107|D"   

请问高手们,怎么去处理呢?最好是有个例子
------解决思路----------------------
101
------解决思路----------------------
A
------解决思路----------------------
106=B
------解决思路----------------------
106=C
------解决思路----------------------
107
------解决思路----------------------
D
这什么意思
101没有=,表示这题没有写,交白卷?
A和D前面没跟题号,这又是闹哪样,到底是哪个题的选项啊
不是应该
101=A
------解决思路----------------------
106=B
------解决思路----------------------
106=C
------解决思路----------------------
107=D
才对吗

如果你不能给出明确的规则,这根本没法处理
------解决思路----------------------

string.Join("
------解决思路----------------------
", str.Split('
------解决思路----------------------
').Select(p => p.Split('='))
    .GroupBy(p => p[0], p => p[1])
    .Select(g => g.Key + "=" + string.Join(",", g)));

------解决思路----------------------
//using System.Text.RegularExpressions
var str = "101
------解决思路----------------------
A
------解决思路----------------------
106=B
------解决思路----------------------
106=C
------解决思路----------------------
107
------解决思路----------------------
A
------解决思路----------------------
108=A
------解决思路----------------------
108=D
------解决思路----------------------
109
------解决思路----------------------
D";
str = Regex.Replace(str, @"((\
------解决思路----------------------
?\d+=)([A-Z]))+", m => m.Groups[2].Captures[0].Value + string.Join(",", m.Groups[3].Captures.Cast<Capture>().Select(c => c.Value).ToArray()));
  相关解决方案