我是否知道如何删除JAVA代码中的前导零?我尝试了几种方法,如正则表达式工具
"s.replaceFirst("^0+(?!$)", "") / replaceAll("^0*", "");`
但它似乎不支持我当前的编译器合规级别(1.3),将有一条红线表示方法replaceFirst(String,String)未定义为String类型。
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";
}
}
}
感谢您的帮助。
答案 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)
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;
}