Java正则表达式提取计算器表达式第二个操作数的问题
提取计算器表达式的第二个操作数
针对你的需求,这里提供两种简单可行的实现方式:
方法一:正则匹配直接提取
利用正则表达式定位运算符(+、-、*、/)后的整数,同时忽略末尾的等号。正则逻辑是匹配任意运算符后紧跟的一串数字,直到等号前结束。
Java代码示例:
String expr = this.display.getText(); // 匹配运算符后的整数,捕获组1即为第二个操作数 Pattern p = Pattern.compile("[-+*/](\\d+)="); Matcher m = p.matcher(expr); if (m.find()) { String secondOperand = m.group(1); // 此处可对secondOperand进行后续处理 }
方法二:拆分后处理
基于你已有的拆分思路,按运算符拆分表达式后,取第二部分并去掉末尾的等号即可。由于第一个操作数的负号属于数字的一部分,不会被当作运算符拆分,因此无需担心拆分错误。
Java代码示例:
String expr = this.display.getText(); // 按+、-、*、/拆分表达式 String[] parts = expr.split("[-+*/]"); if (parts.length == 2) { // 去掉第二部分末尾的等号 String secondOperand = parts[1].replace("=", ""); // 此处可对secondOperand进行后续处理 }
验证示例输入
针对你给出的测试用例:
- 输入
-23+253=:两种方法均提取到253 - 输入
34-83767=:两种方法均提取到83767 - 输入
-74567*3229765=:两种方法均提取到3229765
内容的提问来源于stack exchange,提问作者Joncarre
相关产品推荐
相关产品推荐

