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
  • 291,719
  • 55
  • 540
  • 600
Tony
  • 3,505
  • 7
  • 41
  • 70

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,045
  • 1
  • 30
  • 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,124
  • 9
  • 58
  • 101
JonnyKash
  • 145
  • 6
3

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
  • 291,719
  • 55
  • 540
  • 600
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
  • 115,525
  • 42
  • 225
  • 281
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,563
  • 1
  • 41
  • 63