有人可以简化模式中的以下行:
下面的代码是删除尾随零,但我无法理解。

字符串阈值为299.0,输出为299。

public static String removeTrailingZeros(String threshold) {
    Pattern thresholdPattern = Pattern.compile("([\\.,]0)($|\\s+)");
    Matcher match = thresholdPattern.matcher(threshold);
    threshold = match.replaceFirst("$2");
    return threshold;
}


我们为什么要做“ match.replaceFirst(” $ 2“);”
我不明白它的重要性。

以及如何找到尾随的零分辨率?

它不会用299代替299.00吗?如果我想这样做,我该怎么做以适应299.0和299.00?

最佳答案

$ 1,$ 2 ... $ n正则表达式替换是对括号中包含的匹配项的引用。 $ 0将是整个匹配项,$ 1将是第一个带括号的捕获,$ 2将是第二个,依此类推。

 Pattern thresholdPattern = Pattern.compile("([\\.,]0*)($|\\s+)");


它将删除任何数量的尾随零。

07-24 15:52