我看到过关于如何在SO中加上0前缀的问题。但不是相反!

你们能建议我如何去掉字母数字文本中的前导零吗?是否有任何内置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

当前回答

使用regex作为一些答案建议是一个很好的方法。如果你不想使用regex,你可以使用下面的代码:

String s = "00a0a121";

while(s.length()>0 && s.charAt(0)=='0')
{
   s = s.substring(1); 
}

其他回答

一种不需要regExp和任何外部库的清晰方法。

public static String trimLeadingZeros(String source) {
    for (int i = 0; i < source.length(); ++i) {
        char c = source.charAt(i);
        if (c != '0') {
            return source.substring(i);
        }
    }
    return ""; // or return "0";
}

你可以这样做: String s = Integer.valueOf("0001007").toString();

使用kotlin很容易

value.trimStart('0')

你可以用regex替换"^0*(.*)"到"$1"

使用regex作为一些答案建议是一个很好的方法。如果你不想使用regex,你可以使用下面的代码:

String s = "00a0a121";

while(s.length()>0 && s.charAt(0)=='0')
{
   s = s.substring(1); 
}