正则表达式去除处理为字符串的前导零

Hor*_*ice 8 java regex

我有这样的数字需要删除前导零.

这就是我需要的:

00000004334300343 - > 4334300343

0003030435243 - > 3030435243

由于我不熟悉正则表达式,所以我无法理解这一点.这不起作用:

(^0)
Run Code Online (Sandbox Code Playgroud)

Roh*_*ain 18

你快到了.你只需要量词:

str = str.replaceAll("^0+", "");
Run Code Online (Sandbox Code Playgroud)

它替换了1个或多个0的出现(也就是+量词所用的.同样,我们有*量词,这意味着0或更多),在字符串的开头(由插入符号给出^),带有空字符串.


Art*_*hev 10

如果您需要从“00”获取“0”,则已接受的解决方案将失败。这是正确的:

str = str.replaceAll("^0+(?!$)", "");
Run Code Online (Sandbox Code Playgroud)

^0+(?!$) 如果后面不是字符串结尾,则表示匹配一个或多个零。

感谢评论者 - 我已经更新了公式以匹配作者的描述。

  • 此方法失败,并显示诸如“000001230000”之类的数字,它给出输出“1230” (3认同)

anu*_*ava 5

如果您知道输入字符串都包含数字,那么您可以执行以下操作:

String s = "00000004334300343";
System.out.println(Long.valueOf(s));
// 4334300343
Run Code Online (Sandbox Code Playgroud)

代码演示

通过转换Long它会自动去除所有前导零。