删除java代码中的前导零

时间:2014-08-19 02:03:13

标签: java

我是否知道如何删除JAVA代码中的前导零?我尝试了几种方法,如正则表达式工具

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

但它似乎不支持我当前的编译器合规级别(1.3),将有一条红线表示方法replaceFirst(String,String)未定义为String类型。

My 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";
       }
    } 
}

感谢您的帮助。

4 个答案:

答案 0 :(得分:14)

如果你想删除前导零,你可以解析为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 :(得分:3)

1.4中引入了

replaceFirst(),您的编译器会在之前发布。

一种可能性是使用类似的东西:

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个字符的字符串。

答案 2 :(得分:3)

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

First parameter:regex - 要与此字符串匹配的正则表达式。

Second parameter:replacement - 将替换匹配表达式的字符串。

答案 3 :(得分:0)

如Java文档中所述,&#39; replaceFirst&#39;自Java 1.4 http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#replaceFirst(java.lang.String,%20java.lang.String)

以来才开始存在

请改用此功能:

String removeLeadingZeros(String str) {
  while (str.indexOf("0")==0)
    str = str.substring(1);
  return str;
}