gpt4 book ai didi

java - 将所有带有 + 符号的数字相加,并将其替换为相加的值

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:43:45 24 4
gpt4 key购买 nike

如果应该添加,我想将所有要添加的数字分组。

  • 测试字符串:'82+18-10.2+3+37=6 + 7
  • 此处添加 82+18 cab 并替换为值 '100。
  • 那么测试字符串会变成:100-10.2+3+37=6 +7
  • 同样可以在测试字符串中添加和替换 2+3+37 作为如下:100-10.42=6 +7
  • 现在 6 +7 不能完成,因为值后面有一个空格'6'。

我的想法是提取应该添加的数字,如下所示:

  • 82+18
  • 2+3+37

然后添加它并使用字符串中的 replace() 方法替换它

尝试正则表达式:

(?=([0-9]{1,}[\\+]{1}[0-9]{1,}))

示例输入:

82+18-10.2+3+37=6 + 7

用于识别要添加和替换的组的 Java 代码:

    import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class ReplaceAddition {

static String regex = "(?=([0-9]{1,}[\\+]{1}[0-9]{1,}))";
static String testStr = "82+18-10.2+3+37=6 + 7 ";

public static void main(String[] args) {
Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
Matcher matcher = pattern.matcher(testStr);

while (matcher.find()) {
System.out.println(matcher.group(0));
for (int i = 1; i <= matcher.groupCount(); i++) {
System.out.println(matcher.group(i));
}
}
}
}

输出:

  • 82+18

  • 2+18

  • 2+3

  • 3+37

无法理解我遗漏的地方。帮助将不胜感激...

最佳答案

我尝试通过删除正先行运算符来简化正则表达式

(?=...)

和括号

(...)

经过这些修改后,正则表达式如下

static String regex = "[0-9]{1,}[\\+]{1}[0-9]{1,}";

当我运行它时,我得到以下结果:

82+18
2+3

这更接近预期,但仍不完美,因为我们得到的是“2+3”而不是 2+3+37。为了处理任意数量的相加数字而不是两个,表达式可以进一步调整为:

static String regex = "[0-9]{1,}(?:[\\+]{1}[0-9]{1,})+";

我这里加的是非捕获组

(?:...)

加号表示一次或多次重复。现在程序产生输出 82+18 2+3+37正如预期的那样。

关于java - 将所有带有 + 符号的数字相加,并将其替换为相加的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57419312/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com