Преобразование строки в int без потери нуля в начале - PullRequest
9 голосов
/ 07 июля 2011

Я попытался int.parse, и преобразовать класс для преобразования строки в int.

Пока я конвертирую. Я теряю 0 в начале, чего я не хочу.

Пример: 09999 становится 9999 - я этого не хочу.

Я хочу оставить все как есть.

Как я могу это сделать?

Ответы [ 10 ]

30 голосов
/ 21 октября 2011
myNumber.ToString("D5");

//D представляет «Десятичное число», а 5 - указанное количество цифр, которое вы хотите, чтобы число было всегда.Это будет дополнять ваше значение нулями, пока оно не достигнет 5 цифр.

12 голосов
/ 07 июля 2011

Вы не можете.int предназначен для представления математического целого числа.Числа 09999 и 9999 - это в точности математически.

Возможно, здесь другая проблемаЗачем тебе это нужно?Может быть, есть лучший способ сделать то, что вы хотите.

8 голосов
/ 07 июля 2011

Если вы хотите сделать что-то вроде всегда печатать свой номер с 5 местами, это выглядит как

myNumber.ToString().PadLeft(5, '0');
3 голосов
/ 07 июля 2011

Нет, int.Parse("09999") фактически возвращает 0x0000270F. Ровно 32 бита (потому что именно таков int), 18 из которых являются ведущими нулями (если быть точным, то один является знаковым битом, можно утверждать, что только 17 ведущих нулей).

Только когда вы конвертируете его обратно в строку, вы получаете «9999», наличие или отсутствие начального нуля в указанной строке контролируется преобразованием обратно в строку.

0 голосов
/ 05 ноября 2018

Хотя это старая ветка, но это также может помочь:

// convert to big integer
var bigIntBits = BigInteger.Parse(intNumber);
int indexOfOne = intNumber.IndexOf('1');            
string backToString = new string('0', indexOfOne) + bigIntBits.ToString();    
0 голосов
/ 07 апреля 2017
// For our requirement that new ID's should be of same length as old ID's.
string strID = "002017";
int number = int.Parse(strID);
string newID = (++number).ToString("D" + strID.Length);
0 голосов
/ 07 июля 2011

вы не можете, но если вам нужно привести его к int и сохранить нули, вы можете создать его копию и затем преобразовать в int, тогда у вас будет две версии: одна int и одна строка. 1001 *

0 голосов
/ 07 июля 2011

Если вы просто конвертируете в int для проверки значения, сохраняйте исходные данные и используйте их строковое значение, когда вы хотите получить начальное значение. Если вам требуется, чтобы у целого числа было нулевое заполнение после математической работы с ним, вам придется форматировать его с помощью sprintf и т. П. Всякий раз, когда вы выводите его.

0 голосов
/ 07 июля 2011

Int значения не могут иметь начальные нули

0 голосов
/ 07 июля 2011

вы не можете. вам нужно будет сохранить значение в виде строки, если вы хотите, чтобы оно оставалось таким.

...