删除 Java 中的尾随零

2022-08-31 22:17:54

我有字符串(来自DB),它可能包含数值。如果它包含数值,我想删除尾随零,例如:

  • 10.0000
  • 10.234000

str.replaceAll("\\.0*$", ""),适用于第一个,但不适用于第二个。

很多答案都指向使用,但我得到的可能不是数字。所以我认为更好的解决方案可能是通过正则表达式。BigDecimalString


答案 1

有以下可能性:

1000    -> 1000
10.000  -> 10 (without point in result)
10.0100 -> 10.01 
10.1234 -> 10.1234

我懒惰和愚蠢,只是

s = s.indexOf(".") < 0 ? s : s.replaceAll("0*$", "").replaceAll("\\.$", "");

使用相同的解决方案,而不是某些注释中提到的解决方案,以便于理解containsindexOf

 s = s.contains(".") ? s.replaceAll("0*$","").replaceAll("\\.$","") : s

答案 2

使用十进制格式,这是最干净的方式

String s = "10.1200";
DecimalFormat decimalFormat = new DecimalFormat("0.#####");
String result = decimalFormat.format(Double.valueOf(s));
System.out.println(result);