正则表达式去除被视为字符串的前导零

新手上路,请多包涵

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

这是我需要的:

00000004334300343 -> 4334300343

0003030435243 -> 3030435243

我无法弄清楚这一点,因为我是正则表达式的新手。这不起作用:

 (^0)

原文由 Horse Voice 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 456
2 个回答

您快到了。你只需要量词:

 str = str.replaceAll("^0+", "");

它替换了 1 次或多次出现的 0(即 + 量词的用途。类似地,我们有 * 量词,这意味着 0 或更多),在字符串的开头(这是插入符号给出的 - ^ ),带有空字符串。

原文由 Rohit Jain 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

 str = str.replaceAll("^0+(?!$)", "");

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

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

原文由 Artur Dumchev 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题