我正在尝试制作一个计算器。我正在使用 Regex.Split() 来获取表达式中的数字输入。它适用于非十进制数字,但现在我正在寻找一种方法来获取十进制数字输入。string mExp = "1.50 + 2.50";string[] strNum = (Regex.Split(mExp, @"[\D+]"));num1 = double.Parse(strNum[0]);num2 = double.Parse(strNum[1]);
2 回答
慕田峪4524236
TA贡献1875条经验 获得超5个赞
您可以更改正则表达式以分割一定数量的空格,后跟算术运算符,后跟空格:
string[] strNum = (Regex.Split(mExp, @"\s*[+/*-]\s*"));
Console.WriteLine(string.Join("\n", strNum));
输出:
1.50
2.50
要处理负数,您必须使正则表达式更加复杂,并添加数字的后视和数字或 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.50
2.50
3.0
-1
- 2 回答
- 0 关注
- 98 浏览
添加回答
举报
0/150
提交
取消