Parse String для long с ведущим нулем

Короче говоря (на Java):

String input= "0888880747;

long convert = Long.parseLong(input);

Значение новообращенного теперь: 888880747

Как я могу разобрать String к long но сохранить лидирующий ноль?

5 ответов

Решение

Вы не можете, потому что у длинного нет начального нуля. Long должен хранить целые числа (математическая концепция, а не int ), т.е.

номерная линия

Строка символов, таких как 05 не целое число, 5 является. Что вы можете сделать, это отформатировать длинный 5 с начальным нулем при его печати, см., например, java.util.Formatter.

Вы уверены, что хотите получить длинное / целое число? Что ты хочешь с этим делать?

Вам придется изменить его обратно на String когда вы выполнили расчеты по конвертации, тогда:

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

long это числовое значение. Числовое значение 000001 ничем не отличается от 1: это точно такое же число.

Таким образом, вы не можете узнать, сколько лидирующих нулей было в начальном представлении, если у вас есть long,

И если вы действительно заботитесь об этом, то вам все равно не следует обрабатывать ввод как числовой тип, а сохранять String сам, а не.

Если ваше значение длинное, то любые нули слева (ведущие) не имеют математического значения, поэтому они удаляются при анализе.

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.

Другие вопросы по тегам