繁体   English   中英

分割字符串并保留分隔符作为新的结果项

[英]Split string and keep separator as new result item

具有像11+2-33这样的字符串,我需要将其拆分为11,+,2,-,33

这产生了我11 +,2-,33 Regex.Split(input, @"(?<=[+,-])")

所以我需要在每个结果项上再次应用它,还有更好的方法吗?

正如您所说的那样,您既需要先行又要向前看:

var matches = Regex.Split("11+2-33", "(?<=[+-])|(?=[+-])");
Console.WriteLine(string.Join(",", matches));

11,+,2,-,33

您可以使用与数字或运算符匹配的正则表达式。 例:

string expression = "11+2-33";

string[] parts =
  Regex.Matches(expression, @"\d+|[+-]").Cast<Match>().Select(m => m.Value).ToArray();

foreach (string s in parts) Console.WriteLine(s);

输出:

11
+
2
-
33

我不是正则表达式专家,因此使用正则表达式,匹配项等可能有一个聪明的方法,但是要怎么做才能添加定界符:

string s = "11+2-33";
s = s.Replace("+","|+|");
s = s.Replace("-","|-|");

string[] parts = s.Split('|');

您可以从那里进行重构,但这是总体思路。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM