使用String.Split后保留分隔符

时间:2015-02-24 18:33:11

标签: c# split

我想使用多个分隔符来分割字符串,如下所示:

"aa*ab+ac/ad-ae=af;ag".Split(new string[] { ";", "*", "+", "/", "-" })

返回

{ "aa", "ab", "ac", "ad", "ae", "af", "ag" }

但是,如果我希望将分隔符保留在最终数组中,例如

,该怎么办?
{ "aa", "*", "ab", "+", "ac", "/", "ad", "-", "ae", "=", "af", ";", "ag" }

有一种简单的方法吗?

2 个答案:

答案 0 :(得分:6)

您可以使用 Regex

var input = "aa*ab+ac/ad-ae=af;ag";
var parts = Regex.Matches(input, @"[;\*\+/=-]|[^;\*\+/=-]+")
                .Cast<Match>()
                .Select(m => m.Value)
                .ToList();

答案 1 :(得分:3)

有人要求正则表达式吗? : - )

string[] parts = Regex.Split("aa*ab+ac/ad-ae=af;ag", "(?=[;*+/-])|(?<=[;*+/-])");

在这里,我使用正向前瞻/后视来将字符串“围绕”标志分开。