首页 > 解决方案 > 从字符串中删除多余的零

问题描述

我想编写一个正则表达式来从字符串中删除多余的零。

REGEXP_REPLACE(REGEXP_REPLACE("Input_String","^0+", ''),'0+$','') 如果 input_string = 120thenoutput_string = 12 而不是 120.

以下是预期的输入与输出:

120--> 120
12--> 12
120.00--> 120
000329.0--> 329
14.4200--> 14.42
000430--> 430 
0.24000--> 0.24
0.100--> 0.1
1.0--> 1

标签: javaregexhivehiveql

解决方案


最简单的方法是使用BigDecimal

String stripped = new BigDecimal(input).stripTrailingZeros().toString();

编辑:这实际上不适用于000430: 的字符串表示是4.3E+2.

您可以通过确保scale至少为零来解决此问题:

BigDecimal b = new BigDecimal(input).stripTrailingZeros();
if (b.scale() < 0) {
  b = b.setScale(0, RoundingMode.UNNECESSARY);
}
String stripped = b.toString();

推荐阅读