java - 匹配字符串之间的多个数字,处理并替换

标签 java regex pattern-matching

我有一个包含多个数字的字符串,这些数字必须再次处理并替换为同一个字符串。

例如:

假设我有:

my name is anusha, I am a noob in Java having reputation: 3647 haha I am just kidding my actual reputation is 0001

现在假设我想提取 3647 并对其进行乘法、除法或加法运算。让我们除以 3647/100 = 36.47 并用与 0001 相同的字符串中的原始数字替换并替换为 00.01。

结果字符串应该是:

my name is anusha, I am a noob in Java having reputation: 36.47 haha I am just kidding my actual reputation is 00.01

感谢您的帮助。我知道这对很多人来说很愚蠢,但我仍在学习。

我试过:

Pattern intsOnly = Pattern.compile("\\d+");
    Matcher makeMatch = intsOnly.matcher("my name is anusha, I am a noob in Java having reputation: 3647 haha I am just kidding my actual reputation is 0001");
    makeMatch.find();
    String inputInt = makeMatch.group();
    System.out.println(inputInt);

但显然它只获取第一个数字,因为我没有使用循环,而且我也不确定如何处理该数字。

最佳答案

试试这个:

    final String regex = "\\d+";
    String string = "my name is anusha, I am a noob in Java having reputation: 3647 haha I am just kidding my actual reputation is 0001";
    NumberFormat formatter = new DecimalFormat("00.00");     

    final Pattern pattern = Pattern.compile(regex);
    final Matcher matcher = pattern.matcher(string);

    while (matcher.find()) {
        Float val=new Float(matcher.group(0));
        val=val/100;
        string=string.replace(matcher.group(0),formatter.format(val));
    }
    System.out.println(string);

}

输出:

my name is anusha, I am a noob in Java having reputation: 36.47 haha I am just kidding my actual reputation is 00.01

关于java - 匹配字符串之间的多个数字,处理并替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40609095/

相关文章:

regex - 如何为两个正则表达式的 "intersection"编写正则表达式,可用于匹配字符串中的任何位置

c - 过滤器 c 注释的正则表达式

java - 打开文件时颜色更改不起作用

java - Java 最多只拆分 5 个逗号

java - 什么时候需要用JAX-RS编写自定义MessageBodyWriter和MessageBodyReader?

ruby-on-rails - Ruby - 查找 REGEX 匹配位置,并且丢失的匹配应用正则表达式?

F# 按类型进行模式匹配

scala - Scala 中嵌套数组的模式匹配

scala - Scala 中的案例类、模式匹配和柯里化(Currying)构造函数

java - 保留大写/小写字符和空格的正则表达式?