在Java代码中去掉前导零

4

请问如何在JAVA代码中去掉前导零?我尝试了几种方法,比如使用正则表达式工具。

"s.replaceFirst("^0+(?!$)", "") / replaceAll("^0*", "");` 

但是看起来我的当前编译器兼容级别(1.3)好像不支持,会有一条红线指出方法replaceFirst(String, String)对于类型String是未定义的。

我的Java代码的一部分

public String proc_MODEL(Element recElement)
{
 String SEAT        = "";
    try
    {
        SEAT    = setNullToString(recElement.getChildText("SEAT")); // xml value =0000500

       if (SEAT.length()>0)  
       {
           SEAT = SEAT.replaceFirst("^0*", "");  //I need to remove leading zero to only 500 
       }
       catch (Exception e)
       {
           e.printStackTrace();
           return "501 Exception in proc_MODEL";
       }
    } 
}

感谢您的帮助。
感谢您的协助。

3
纯粹出于好奇,为什么要使用Java 1.3?这是在嵌入式系统上吗?按照Java的标准来看,这已经非常老了。 - yshavit
可能是如何从字母数字文本中删除前导零?的重复问题。 - dARKpRINCE
4个回答

15

如果你想去掉前导零,你可以将其解析为一个Integer,然后用一行代码转换回String

String seat = "001";// setNullToString(recElement.getChildText("SEAT"));
seat = Integer.valueOf(seat).toString();
System.out.println(seat);

输出为

1

当然,如果您打算使用该值,则最好保留int类型。

int s = Integer.parseInt(seat);
System.out.println(s);   

1
非常感谢你,@Elliot。这种方法更加简单高效。 - user3835327

3

replaceFirst() 是在1.4版本中引入的,而您的编译器早于此版本。

一种可能的解决方案是使用类似以下内容的方法:

public class testprog {
    public static void main(String[] args) {
        String s = "0001000";
        while ((s.length() > 1) && (s.charAt(0) == '0'))
            s = s.substring(1);
        System.out.println(s);
    }
}

这并不是世界上最高效的代码,但它可以完成工作。

一个更加高效的代码片段,避免了不必要的字符串创建:

public class testprog {
    public static void main(String[] args) {
        String s = "0001000";
        int pos = 0;
        int len = s.length();
        while ((pos < len-1) && (s.charAt(pos) == '0'))
            pos++;
        s = s.substring(pos);
        System.out.println(s);
    }
}

这两种方法也处理了空字符串和仅包含 0 字符的字符串的退化情况。


很好,两种都可以!谢谢解决方案! - user3835327

1

使用Java方法str.replaceAll("^0+(?!$)", "")很简单;

第一个参数:regex--要匹配此字符串的正则表达式。

第二个参数:replacement--用于替换匹配表达式的字符串。


0

2
使用replaceFirst("^0*","")和将整个字符串替换掉是一样的。 - jondinham

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接