我已经在 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
正则表达式是这项工作的最佳工具;它应该是什么取决于问题规范。以下内容删除了前导零,但在必要时留下了一个(即它不会只是变成"0"一个空白字符串)。
"0"
s.replaceFirst("^0+(?!$)", "")
锚点将^确保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+(?!$)", "") + "]"); }