c# - 使用多个字符串与最终数组中的分隔符拆分字符串
问题描述
我一直在搜索,发现我可以使用多个字符串拆分一个字符串,例如“ x += 10 ”,所以我得到了结果{“x”,“10”},但我也希望在最终数组中包含分隔符,所以它将是{ "x", "+", "= ", "10" }使用分隔符 " + " 和 " = "。我使用的代码是var words = code.Split(Actions.available, StringSplitOptions.RemoveEmptyEntries);
解决方案
使用正则表达式解析出文本。通过使用这些规则来创建文本匹配。
- 任何连续的数字
- 任何连续的文本
- 单独的分隔符,例如
+
or-
或=
。这是正则表达式中的一个集合 - 忽略任何空格。
from 的结果Regex.Matches
是标记化的输出:
代码
var input = "x += 10";
var pattern = @"(\w+|[-=+])";
Regex.Matches(input, pattern)
.OfType<Match>()
.Select(mt => mt.Value);
与正则表达式拆分交替
如果使用Regex.Split
相同的模式,它会像我们之前指定的那样拆分所有内容,但也会由于其设计而在空格中添加。
但是为了补偿在结果列表中添加 linq 扩展调用,我们可以删除空格并获得相同的答案。
Regex.Split(input, @"(\w+|[-=+])")
.Where(str => !string.IsNullOrWhiteSpace(str))
结果是{ "x", "+", "=", "10" }