我在 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"
变为空白字符串)。
s.replaceFirst("^0+(?!$)", "")
^
anchor 将确保被匹配的 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+(?!$)", "") + "]");
}
另见
关于java - 如何从字母数字文本中删除前导零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2800739/