删除尾随小数点&用正则表达式归零

时间:2011-09-21 00:17:25

标签: java regex string

这是从字符串中删除尾随小数和零的正确REGEX吗?我无法让它发挥作用。我错过了什么?

  1. 78.000 - > 78
  2. 78.008 - > 78.008
  3. str.replaceAll("^.0*$", "");

3 个答案:

答案 0 :(得分:24)

你需要转义.,因为它是Regex中与任何角色匹配的特殊字符。您还必须删除^,它位于数字开头的锚点。

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

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

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

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

答案 1 :(得分:5)

不。使用此:

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

答案 2 :(得分:4)

删除匹配字符串开头的^。你还需要转义.,因为它是一个匹配任何字符(新行除外)的正则表达式元字符:

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

演示:http://ideone.com/RSJrO