3

Long story short (in Java):

String input= "0888880747;

long convert = Long.parseLong(input);

The value of convert is now: 888880747

How can I parse the String to a long but retain the leading zero?

Joachim Sauer
  • 302,674
  • 57
  • 556
  • 614
Tony
  • 3,587
  • 8
  • 44
  • 77

5 Answers5

12

You cannot because a long does not have a leading zero. A long is supposed to store integers (the mathematical concept, not int), i.e.

number line

A string of characters like 05 is not an integer, 5 is. What you can do is format a long that holds 5 with a leading zero when you print it, see e.g. java.util.Formatter.

Are you sure you even want to have a long/an integer? What do you want to do with it?

middus
  • 9,103
  • 1
  • 31
  • 33
6

You'll have to change it back to a String when you've done your calculations on convert, then:

output = String.format("%06d", convert);
T.Rob
  • 31,522
  • 9
  • 59
  • 103
JonnyKash
  • 145
  • 6
2

A long is a numeric value. The numeric value of 000001 is no different from 1: It's the exact same number.

So you can't find out how many leading zeroes the initial representation had, once you have a long.

And if you really care about that, then you shouldn't handle the input as a numeric type anyway, but store the String itself, instead.

Joachim Sauer
  • 302,674
  • 57
  • 556
  • 614
0

You can tweak the code. First get the length of string.

String input  =   "0888880747";

System.out.println(String.format("%0"+input.length()+"d", Long.valueOf(input)))):

The above tweek works but doesn't look good. Better to read the value as String and store in DB as varchar instead of Number if leading zeros matter.

Yu Hao
  • 119,891
  • 44
  • 235
  • 294
0

If your value is a long, then any zeroes to the left (leading) have no mathematical value, therefore, they are stripped off when you do the parsing.

pcalcao
  • 15,789
  • 1
  • 44
  • 64