你可以分割一个字符串并保留分割的字符吗?

问题描述 投票:0回答:2

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

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

你得到了

A
B
C
D
E
F
G
H

有没有办法使用 split 来保留 split 字符:

A
+B
+C
+D
+E
+F
+G
+H

或者如果您在

+
前面有
A
那么

+A
+B
+C
+D
+E
+F
+G
+H
c# split
2个回答
9
投票

您可以将

Regex.Split
与不消耗分隔符的模式一起使用:

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

var ans = Regex.Split(src, pattern);

如果存在前导

+
,这将创建一个空条目,因为在
+
之前存在隐含的分割。

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

var ans2 = Regex.Split(src, pattern).Where(s => !String.IsNullOrEmpty(s)).ToArray();

或者,您可以使用

Regex.Matches
来提取完整的匹配模式:

var ans3 = Regex.Matches(src, @"(?:^|\+)[^+]*").Cast<Match>().Select(m => m.Value).ToArray();

5
投票

你可以这样做:

"A+B+C+D+E+F+G+H".Split(new char[] { '+' }).Select(x => "+" + x);
© www.soinside.com 2019 - 2024. All rights reserved.