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

标签 java string alphanumeric

我在 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/

相关文章:

C++ WCHAR 操作

java - 如何删除特定标记之前的所有内容,包括字符串中的标记

javascript - 可以用正则表达式来完成吗?

regex - 正则表达式-无特殊字符

c# - 使用 C# 自动字母数字唯一 ID

java - 为什么 Java Stream 生成器是无序的?

java - 用泛型克隆

java - 在 Spring Framework (Mockito) 中模拟一个 void 方法

java - 使用 Java 和 C# 的泛型来模拟鸭子类型(duck typing)

c - 指针在字符串内移动