你能拆分一个字符串并保留拆分字符吗?

Asd*_*dar 1 c# split

有没有办法分割字符串,但保留拆分字符,如果你这样做:

"A+B+C+D+E+F+G+H".Split(new char[] { '+' });

你得到

A
B
C
D
E
F
G
H
Run Code Online (Sandbox Code Playgroud)

有没有办法使用拆分,所以它将保留拆分字符:

A
+B
+C
+D
+E
+F
+G
+H
Run Code Online (Sandbox Code Playgroud)

或者如果你有+在前面A,然后

+A
+B
+C
+D
+E
+F
+G
+H
Run Code Online (Sandbox Code Playgroud)

Net*_*age 6

您可以使用Regex.Split不使用分隔符字符的模式:

var pattern = @"(?=\+)";

var ans = Regex.Split(src, pattern);
Run Code Online (Sandbox Code Playgroud)

如果存在前导+,则会创建一个空条目,因为在前面有隐含的分割+.

如果不需要,可以使用LINQ删除空条目:

var ans2 = Regex.Split(src, pattern).Where(s => !String.IsNullOrEmpty(s)).ToArray();
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用Regex.Matches提取完整匹配模式:

var ans3 = Regex.Matches(src, @"\+[^+]*").Cast<Match>().Select(m => m.Value).ToArray();
Run Code Online (Sandbox Code Playgroud)


GBr*_*n12 5

你可以这样做:

"A+B+C+D+E+F+G+H".Split(new char[] { '+' }).Select(x => "+" + x);
Run Code Online (Sandbox Code Playgroud)