java - 从字符串中删除多余的零

标签 java regex hive hiveql

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

REGEXP_REPLACE(REGEXP_REPLACE("Input_String","^0+", ''),'0+$','') 失败,如果 input_string = 120 然后 output_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

最佳答案

最简单的方法是使用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();

关于java - 从字符串中删除多余的零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56181925/

相关文章:

mysql - SQL中的正则表达式检测一个或多个数字

hadoop - Hive 查询 : How to use group by with rank?

java - Java 链表中的最小元素

java - 如何用另一个 java.util.Properties 中的所有对覆盖 java.util.Properties 中的某些对?

javascript - 使用正则表达式从字符串中提取图像 url

python - 与Hortonworks Ambari(Hive)的Python连接。

hadoop - HIVE:UDF 错误失败:找不到类 <ClassName>

java - 让 Thymeleaf 读取对象模型数组

java - 我如何根据要替换的内容用单个项目替换多个项目

python - 删除 Python URL 列表末尾的特殊字符/标点符号