删除Java中的前导零

时间:2015-08-27 15:43:59

标签: java string

public static String removeLeadingZeroes(String value):

给定一个有效的非空输入,该方法应该返回所有前导零被删除的输入。因此,如果输入是“0003605”,则该方法应返回“3605”。作为特殊情况,当输入仅包含零(例如“000”或“0000000”)时,该方法应返回“0”

public class NumberSystemService {
/**
 * 
 * Precondition: value is purely numeric
 * @param value
 * @return the value with leading zeroes removed.
 * Should return "0" for input being "" or containing all zeroes
 */
public static String removeLeadingZeroes(String value) {
     while (value.indexOf("0")==0)
         value = value.substring(1);
          return value;
}

我不知道如何为字符串编写代码" 0000"。

13 个答案:

答案 0 :(得分:29)

如果字符串始终包含有效整数,则return new Integer(value).toString();是最简单的。

public static String removeLeadingZeroes(String value) {
     return new Integer(value).toString();
}

答案 1 :(得分:3)

  1. 停止重新发明轮子。 您遇到的几乎所有软件开发问题都不会是第一次。 代替, 这将是您第一次遇到它。
  2. Apache项目和/或guava项目已经编写了几乎所需的所有实用程序方法。
  3. 阅读Apache StringUtils JavaDoc page。 该实用程序可能已经提供了您将需要的所有字符串操作功能

一些示例代码可以解决您的问题:

public String stripLeadingZeros(final String data)
{
    final String strippedData;

    strippedData = StringUtils.stripStart(data, "0");

    return StringUtils.defaultString(strippedData, "0");
}

答案 2 :(得分:1)

您可以添加对字符串长度的检查:

public static String removeLeadingZeroes(String value) {
     while (value.length() > 1 && value.indexOf("0")==0)
         value = value.substring(1);
         return value;
}

答案 3 :(得分:1)

private String trimLeadingZeroes(inputStringWithZeroes){
    final Integer trimZeroes = Integer.parseInt(inputStringWithZeroes);
    return trimZeroes.toString();
}

答案 4 :(得分:1)

您可以使用下面的替换功能,它将对具有字母数字或数字的字符串起作用

s.replaceFirst("^0+(?!$)", "")

答案 5 :(得分:0)

我会先考虑检查一下这个案子。通过字符检查非“0”字符循环字符串字符。如果您看到非“0”字符,请使用您拥有的进程。如果不这样做,则返回“0”。这是我将如何做(未经测试,但接近)

boolean allZero = true;
for (int i=0;i<value.length() && allZero;i++)
{
    if (value.charAt(i)!='0')
        allZero = false;
}
if (allZero)
    return "0"
...The code you already have

答案 6 :(得分:0)

您可以使用模式匹配器检查仅包含零的字符串。

public static String removeLeadingZeroes(String value) {
    if (Pattern.matches("[0]+", value)) {
        return "0";
    } else {
        while (value.indexOf("0") == 0) {
            value = value.substring(1);
        }
        return value;
    }
}

答案 7 :(得分:0)

你可以试试这个:
1.如果字符串的数值为0,则返回新字符串(“0”) 2.否则从字符串中删除零,返回子字符串

public static String removeLeadingZeroes(String str)
{
    if(Double.parseDouble(str)==0)
        return new String("0");
    else
    {
        int i=0;
        for(i=0; i<str.length(); i++)
        {
            if(str.charAt(i)!='0')
                break;
        }
        return str.substring(i, str.length());
    }
}

答案 8 :(得分:0)

使用String.replaceAll(),如下所示:

    public String replaceLeadingZeros(String s) {
        s = s.replaceAll("^[0]+", "");
        if (s.equals("")) {
            return "0";
        }

        return s;
    }

这将匹配所有前导零(使用正则表达式^ [0] +)并用空格替换它们。最后,如果您只留下一个空白字符串,则返回“0”。

答案 9 :(得分:0)

public String removeLeadingZeros(String digits) {
    //String.format("%.0f", Double.parseDouble(digits)) //Alternate Solution
    String regex = "^0+";
    return digits.replaceAll(regex, "");
}

removeLeadingZeros("0123"); //Result -> 123
removeLeadingZeros("00000456"); //Result -> 456
removeLeadingZeros("000102030"); //Result -> 102030

答案 10 :(得分:0)

int n = 000012345;
n = Integer.valueOf(n + "", 10);

指定基数10很重要,否则整数将被读取为八进制文字并返回错误的值。

答案 11 :(得分:0)

public String removeLeadingZeros(String num) {
    String res = num.replaceAll("^0+", "").trim();
    return res.equals("")? "0" : res;
}

答案 12 :(得分:0)

我发现以下是最简单和最可靠的,因为它适用于整数和浮点数:

public static String removeNonRequiredLeadingZeros(final String str) {
    return new BigDecimal(str).toPlainString();
}

您可能想要检查传入的字符串是否为空和空白,并修剪它以删除前导和尾随空格。

您还可以使用以下方法去除尾随零:

public static String removeNonRequiredZeros(final String str) {
    return new BigDecimal(str).stripTrailingZeros().toPlainString();
}