如何正则表达式拆分表达式以接受十进制数?

我正在尝试制作一个计算器。我正在使用 Regex.Split() 来获取表达式中的数字输入。它适用于非十进制数字,但现在我正在寻找一种方法来获取十进制数字输入。


string mExp = "1.50 + 2.50";

string[] strNum = (Regex.Split(mExp, @"[\D+]"));

num1                = double.Parse(strNum[0]);

num2                = double.Parse(strNum[1]);


天涯尽头无女友
浏览 40回答 2
2回答

慕田峪4524236

您可以更改正则表达式以分割一定数量的空格,后跟算术运算符,后跟空格:string[] strNum = (Regex.Split(mExp, @"\s*[+/*-]\s*"));Console.WriteLine(string.Join("\n", strNum));输出:1.502.50rextester 上的演示要处理负数,您必须使正则表达式更加复杂,并添加数字的后视和数字或 a 的前视-:string mExp = "-1.50 + 2.50 -3.0 + -1";string[] strNum = (Regex.Split(mExp, @"(?<=\d)\s*[+*/-]\s*(?=-|\d)"));Console.WriteLine(string.Join("\n", strNum));输出:-1.502.503.0-1rextester 上的演示

婷婷同学_

您可以使用以下正则表达式来拆分非十进制数和十进制数:[^\d.]+正则表达式演示string[]&nbsp;strNum&nbsp;=&nbsp;(Regex.Split(mExp,&nbsp;@"[^\d.]+"));本质上是说递归地匹配除数字或点字符之外的任何内容,并按该匹配项进行分割。
打开App,查看更多内容
随时随地看视频慕课网APP