有没有办法拆分字符串但保留拆分字符,如果你这样做:
"A+B+C+D+E+F+G+H".Split(new char[] { '+' });
你得到了
A
B
C
D
E
F
G
H
有没有办法使用拆分,所以它会保留拆分字符:
A
+B
+C
+D
+E
+F
+G
+H
或者如果您在+
前面A
那么
+A
+B
+C
+D
+E
+F
+G
+H
答案 0 :(得分:6)
您可以将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();
答案 1 :(得分:5)
你可以这样做:
"A+B+C+D+E+F+G+H".Split(new char[] { '+' }).Select(x => "+" + x);