Tony
Tony

Reputation: 3638

Parse String to long with leading zero

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?

Upvotes: 3

Views: 25720

Answers (5)

Raghavendra Prasad
Raghavendra Prasad

Reputation: 36

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.

Upvotes: 0

JonnyKash
JonnyKash

Reputation: 145

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

output = String.format("%06d", convert);

Upvotes: 6

middus
middus

Reputation: 9121

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?

Upvotes: 12

pcalcao
pcalcao

Reputation: 15990

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.

Upvotes: 0

Joachim Sauer
Joachim Sauer

Reputation: 308021

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.

Upvotes: 2

Related Questions