拆分字符串并将分隔符保留为新结果项

时间:2015-05-01 19:27:43

标签: c# string

拥有11+2-33之类的字符串我需要将其拆分为11,+,2,-,33

这产生了11 +,2-,33  Regex.Split(input, @"(?<=[+,-])")

所以我需要在每个结果项上再次应用它,有更好的方法吗?

2 个答案:

答案 0 :(得分:4)

正如你所说的那样,你需要后视和前瞻:

var matches = Regex.Split("11+2-33", "(?<=[+-])|(?=[+-])");
Console.WriteLine(string.Join(",", matches));

11,+,2,-,33

答案 1 :(得分:1)

我不是正则表达式专家,因此可能有一种聪明的方法可以使用正则表达式,匹配等,但将如何做到这一点是添加分隔符:< / p>

string s = "11+2-33";
s = s.Replace("+","|+|");
s = s.Replace("-","|-|");

string[] parts = s.Split('|');

你可以从那里重构,但这是一般的想法。