使用正则表达式删除尾随小数点和零

2022-09-03 09:52:56

这是从字符串中删除尾随小数和零的正确正则表达式吗?我无法让它工作。我错过了什么?

  1. 78.000 -> 78
  2. 78.008 -> 78.008

str.replaceAll("^.0*$", "");


答案 1

您需要转义 ,因为它是正则表达式中与任何字符匹配的特殊字符。您还必须删除 ,它将锚定在数字的开头。.^

str.replaceAll("\\.0*$", "");

如果要确保点前面有一个数字,可以使用 lookinde,如下所示:

str.replaceAll("(?<=^\\d+)\\.0*$", "");

lookbehind(部分)不是匹配的一部分,因此它不会被替换,但它仍然必须匹配正则表达式的其余部分才能匹配。(?<=...)


答案 2

不。使用这个:

str.replaceAll("[.0]+$", "");