如何从“负”字母数字字符串中删除前导零

jun*_*lop 1 java regex apache-commons guava

今天是个好日子。

我有一个字母数字值。例如:“-00000050.43”。我需要将其转换为 BigDecimal(首选,因为它是 $ 的数量)或 Float 或 Double(取决于“.”后的位数。通常有两位数),例如“-50.43”。因此,我有 3 种不同的字母数字值解决方案。请参阅下面的内容:

正则表达式

"00000050.43".replaceFirst("^0+(?!$)", "")
Run Code Online (Sandbox Code Playgroud)

阿帕奇共享区

StringUtils.stripStart("00000050.43","0");
Run Code Online (Sandbox Code Playgroud)

和谷歌番石榴

CharMatcher.is('0').trimLeadingFrom("00000050.43")
Run Code Online (Sandbox Code Playgroud)

它不适用于负值。不幸的是,我一开始就不知道如何处理“-”。多谢你们!祝你有美好的一天。

Ada*_*ski 8

如果要将字母数字字符串值转换为BigDecimal,则无需对此字符串执行任何操作。 BigDecimal有一个构造函数,它将string字母数字值作为参数。

String val = "-0000054.1";
BigDecimal bd = new BigDecimal(val);
Run Code Online (Sandbox Code Playgroud)

  • @junior_java_develop 如果没有正则表达式也能工作,为什么要使用正则表达式? (2认同)
  • @junior_java_develop 如果需要,您可以使用`bd.toString()`。将其存储在字符串中“以防万一”被称为[字符串类型代码](https://wiki.c2.com/?StringlyTyped)。 (2认同)