【问题标题】:Removing leading zero in java code删除java代码中的前导零
【发布时间】:2014-10-12 00:49:20
【问题描述】:

我可以知道如何删除 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";
       }
    } 
}

感谢您的帮助。

【问题讨论】:

标签: java


【解决方案1】:

如果您想删除前导零,您可以解析为 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);   

【讨论】:

  • 感谢您@Elliot。这种方法非常简单有效。
【解决方案2】:

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 字符的字符串的退化情况。

【讨论】:

  • 很好,两者都可以接受!!感谢您的解决方案!
【解决方案3】:

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

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

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

【讨论】:

    【解决方案4】:

    如 Java 文档中所述,“replaceFirst”仅从 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;
    }
    

    【讨论】:

    • 和replaceFirst("^0*","")一样,那样的话整个字符串就没有了
    猜你喜欢
    • 2015-11-22
    • 1970-01-01
    • 1970-01-01
    • 2018-08-13
    • 2021-08-10
    • 1970-01-01
    • 2018-06-16
    • 1970-01-01
    相关资源
    最近更新 更多