为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
天涯尽头无女友 2024-01-20 21:02:53
我正在尝试制作一个计算器。我正在使用 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

rextester 上的演示

要处理负数,您必须使正则表达式更加复杂,并添加数字的后视和数字或 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

rextester 上的演示


查看完整回答
反对 回复 2024-01-20
?
婷婷同学_

TA贡献1844条经验 获得超8个赞

您可以使用以下正则表达式来拆分非十进制数和十进制数:

[^\d.]+

正则表达式演示

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

本质上是说递归地匹配除数字或点字符之外的任何内容,并按该匹配项进行分割。


查看完整回答
反对 回复 2024-01-20
  • 2 回答
  • 0 关注
  • 98 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信