使用Regex删除尾随小数点和零

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

  1. 78.000 – > 78
  2. 78.008 – > 78.008

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

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

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

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

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

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

不。 用这个:

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

摆脱^ ,匹配字符串的开头。 你也需要逃脱. ,因为它是匹配任何字符的正则表达式元字符(除了换行符):

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

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