如何从 'negative' 字母数字字符串中删除前导零
How to remove leading zeros from 'negative' alphanumeric string
大家好。
我有一个字母数字值。例如:“-00000050.43”。我需要将它转换为 BigDecimal(更喜欢,因为它是 $ 的数量)或 Float 或 Double(取决于“.”之后的位数。通常有两位数),如“-50.43”。
因此,对于 positive 字母数字值,我有 3 种不同的解决方案。请在下面查看它们:
正则表达式
"00000050.43".replaceFirst("^0+(?!$)", "")
Apache Commons
StringUtils.stripStart("00000050.43","0");
和Google番石榴
CharMatcher.is('0').trimLeadingFrom("00000050.43")
它不适用于负值。不幸的是,一开始我不知道如何处理“-”。
谢谢你们!祝你有个美好的一天。
您可以使用
"00000050.43".replaceFirst("^(-?)0+(?!$)", "")
^(-?)0+(?!$)
模式将匹配
^
- 字符串开头
(-?)
- 第 1 组(替换模式中的 </code> 将引用此组值,如果有 <code>-
匹配,它将在结果字符串中恢复) : 一个可选的 -
0+
- 一个或多个零
(?!$)
- 不允许紧靠右侧的字符串结束位置。
如果要将字母数字字符串值转换为BigDecimal
,则无需对此字符串进行任何操作。
BigDecimal
有一个构造函数,它接受一个 string
字母数字值作为参数。
String val = "-0000054.1";
BigDecimal bd = new BigDecimal(val);
大家好。
我有一个字母数字值。例如:“-00000050.43”。我需要将它转换为 BigDecimal(更喜欢,因为它是 $ 的数量)或 Float 或 Double(取决于“.”之后的位数。通常有两位数),如“-50.43”。 因此,对于 positive 字母数字值,我有 3 种不同的解决方案。请在下面查看它们:
正则表达式
"00000050.43".replaceFirst("^0+(?!$)", "")
Apache Commons
StringUtils.stripStart("00000050.43","0");
和Google番石榴
CharMatcher.is('0').trimLeadingFrom("00000050.43")
它不适用于负值。不幸的是,一开始我不知道如何处理“-”。 谢谢你们!祝你有个美好的一天。
您可以使用
"00000050.43".replaceFirst("^(-?)0+(?!$)", "")
^(-?)0+(?!$)
模式将匹配
^
- 字符串开头(-?)
- 第 1 组(替换模式中的</code> 将引用此组值,如果有 <code>-
匹配,它将在结果字符串中恢复) : 一个可选的-
0+
- 一个或多个零(?!$)
- 不允许紧靠右侧的字符串结束位置。
如果要将字母数字字符串值转换为BigDecimal
,则无需对此字符串进行任何操作。
BigDecimal
有一个构造函数,它接受一个 string
字母数字值作为参数。
String val = "-0000054.1";
BigDecimal bd = new BigDecimal(val);