Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Zero-padding for Integer as String after increment [closed]

Tags:

java

I need to increment by one an String that is only digits:

String current = "000433"; //After increment, will be "000434"

I have this procedure, that works properly:

private String incrementOne(String numberAsString) {
    int leftZeroCount = countLeadingZeros(numberAsString);
    Integer asInteger = Integer.parseInt(numberAsString);
    asInteger++;
    return parseStringWithNZeros(asInteger, leftZeroCount);
}

private String parseStringWithNZeros(Integer asInteger, int leftZeroCount) {
    String asString = Integer.toString(asInteger);
    for (int i = 0; i < leftZeroCount; i++)
        asString = "0" + asString;
    return asString;
}

private int countLeadingZeros(String numberAsString) {
    int count = 0;
    int i = 0;
    while (numberAsString.charAt(i) == '0' && i < numberAsString.length()) {
        count++;
        i++;
    }
    return count;
}

The process is:

  1. Count the left zeros
  2. Parse to Integer
  3. Increment by one
  4. Parse to String
  5. Add the left zeros

The length of the number as String is unknown. I am sure that exists another easier and cleaner way, with regex or something. Which alternatives can I adopt?

Thanks.

like image 218
Héctor Avatar asked Apr 23 '26 21:04

Héctor


1 Answers

How about doing it like this, using String.format():

String original = "000433";
String incremented = String.format("%0" + original.length() + "d",
            Integer.parseInt(original) + 1);

System.out.println(incremented);
like image 103
Robby Cornelissen Avatar answered Apr 26 '26 13:04

Robby Cornelissen



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!