【发布时间】:2021-09-08 10:27:25
【问题描述】:
大家好。
我有一个字母数字值。例如:“-00000050.43”。而且我需要将其转换为 BigDecimal(首选,'因为它是 $ 的数量)或 Float 或 Double(取决于 '.' 之后的位数。通常有两位数),例如“-50.43”。 因此,对于 positive 字母数字值,我有 3 种不同的解决方案。请在下面查看它们:
正则表达式
"00000050.43".replaceFirst("^0+(?!$)", "")
Apache Commons
StringUtils.stripStart("00000050.43","0");
还有谷歌番石榴
CharMatcher.is('0').trimLeadingFrom("00000050.43")
它不适用于负值。不幸的是,我一开始不知道如何处理'-'。 多谢你们!祝你有美好的一天。
【问题讨论】:
-
为什么不直接解析成数字类型呢?
-
@Stultuske 抱歉,我不明白。什么意思?
-
您无需删除前导零即可将其解析为 Bigdecimal。只需按原样获取字符串:
BigDecimal bd = new BigDecimal("-00000050.43"); -
@Eritrean 是的,你是对的。作为一种解决方案,它很有用。
标签: java regex guava apache-commons