c# - 你能拆分一个字符串并保留拆分的字符吗?

标签 c# split

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

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

你得到

A
B
C
D
E
F
G
H

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

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

或者如果你在 A 前面有 + 那么

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

最佳答案

您可以将 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();

关于c# - 你能拆分一个字符串并保留拆分的字符吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49141109/

相关文章:

c# - 如何在 Windows 窗体应用程序中使用此 WndProc?

c# - 如何将变量传递给 C# 中的事件?

python - 匹配文件名后撤消 files.split (python 3.x)

python - 如何将列表拆分为大小相等的 block ?

string - 一行将键值对字符串转换为HashMap

c# - 将 DateTime 与来自 textbox.text 的输入一起使用

c# - 提交表单后在 ASP.net C# 中显示/隐藏面板

r - 根据 R 中的 initial_split() 参数中指定的比例,分配用于分析的行数不等于预期数

linux - 如何在 linux bash 提示符下拆分模式上的字符串并返回模式的最后一个实例以及之后的所有内容

c# - 每个循环中的多个线程