小编典典

如何从字母数字文本中删除前导零?

all

我已经在 SO 中看到了有关如何在此处添加零前缀的问题。但不是相反!

你们能建议我如何删除字母数字文本中的前导零吗?是否有任何内置 API,或者我是否需要编写一个方法来修剪前导零?

例子:

01234 converts to 1234
0001234a converts to 1234a
001234-a converts to 1234-a
101234 remains as 101234
2509398 remains as 2509398
123z remains as 123z
000002829839 converts to 2829839

阅读 73

收藏
2022-04-29

共1个答案

小编典典

正则表达式是这项工作的最佳工具;它应该是什么取决于问题规范。以下内容删除了前导零,但在必要时留下了一个(即它不会只是变成"0"一个空白字符串)。

s.replaceFirst("^0+(?!$)", "")

锚点将^确保0+被匹配的是在输入的开头。(?!$)负前瞻确保不会匹配整个字符串。

测试线束:

String[] in = {
    "01234",         // "[1234]"
    "0001234a",      // "[1234a]"
    "101234",        // "[101234]"
    "000002829839",  // "[2829839]"
    "0",             // "[0]"
    "0000000",       // "[0]"
    "0000009",       // "[9]"
    "000000z",       // "[z]"
    "000000.z",      // "[.z]"
};
for (String s : in) {
    System.out.println("[" + s.replaceFirst("^0+(?!$)", "") + "]");
}
2022-04-29