c# - 正则表达式来分割数字和运算符

标签 c# regex

如何将下面的字符串拆分为数字和运算符分隔的字符串列表(字符串不包含括号或负数)。

示例:

inputString  =  1+2-2.3*4/12.12
outputList =   {1,+,2,-,2.3,*,4,/,12.12}

下面只会给我数字。我也需要运算符

var digits = Regex.Split(inputString  , @"\D+");

最佳答案

由于您确认输入的结构相当简单 - 没有括号,没有负数 - 您可以仅使用简单的 \s*([-+/*])\s* 正则表达式分割字符串。

请注意 Regex.Split还将输出结果中所有捕获的子字符串:

If capturing parentheses are used in a Regex.Split expression, any captured text is included in the resulting string array.

所以,使用

Regex.Split(input, @"\s*([-+/*])\s*")
                    .Where(n => !string.IsNullOrEmpty(n))
                   .ToList();

只是不要忘记从结果列表/数组中删除空元素。

图案详细信息:

  • \s* - 零个或多个空格(用于“修剪”元素)
  • ([-+/*]) - 第 1 组捕获 -+/*
  • \s* - 零个或多个空格(用于“修剪”元素)

请参阅IDEONE demo :

var input = "1+2-2.3*4/12.12";
var results = Regex.Split(input, @"\s*([-+/*])\s*")
                .Where(n => !string.IsNullOrEmpty(n))
                .ToList();
Console.WriteLine(string.Join("\n", results));

关于c# - 正则表达式来分割数字和运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38284924/

相关文章:

javascript - 如何使用asp.net c#将使用jsPDF生成的PDF附加到邮件中

c# - 将字节数组从 Oracle RAW 转换为 System.Guid?

Java 正则表达式 : need one regex to match all the formats specified

java - 使用分隔符进行标记

python - 编译一个将自动转义或忽略特殊字符的正则表达式

c# - 使用 SWIG 从 C++ 初始化对 C# 共享指针的引用

c# - iLMerge 企业库 5.0

c# - 如何将 dll 文件永久添加到我的项目中?

javascript - javascript 中的正则表达式 - 不应允许连续的括号、连续的 + 符号和连续的 - 符号

regex - Angular 2 react 形式验证带有两位小数的数字的模式