как при переводе строки в число сохранить нули перед цифрами? C#
программа запрашивает у нас диапазон от шестизначного числа до шестизначного числа и если пользователь ввел число меньше 6 знаков, то вперед ему дописываются нули
например ввели диапазон от 12 до 666666
и программа нам выведет 000012 666666
я это сделал, только есть проблема, мне нужно его перевести в числовое значение, а при переводе в число нули убираются и получается 12 666666, как мне сохранить нули перед цифрой???
( если вы задались вопросом зачем вообще через стринг это делать, то такое задание мне дал учитель, чтобы разобраться с методами строк )
Console.WriteLine("введите диапазон через пробел");
string f = Console.ReadLine();
int g = f.IndexOf(' ');
int gg = f.LastIndexOf(' ');
string a1 = f.Substring(0, g);
string a2 = f.Substring(gg);
a1 = a1.PadLeft(6, '0');
Console.WriteLine(a1);
int kk = Int32.Parse(a1);
int kk1 = Int32.Parse(a2);
Console.WriteLine(kk+" "+kk1);
Ответы (2 шт):
Как уже сказано в комментариях - никак. Но при выводе воспользуйтесь форматированием:
string.Format("{0:00000}", kk)
при выводе дополнится нулями до 5 знаков, например:
00001 00999 76576
Справедливости ради, string.Format() - запредельно "тугая" штуковина, и работает весьма медленно. Иногда нужно быстрее.
Абстрактный (алгоритмический) способ следующий:
- Найдите длину числа, и быстрые способы нахождения длины числа - есть.
- Посмотрите на найденную длину числа, если длина числа меньше (равна) вашему диапазону, то возвращайте строковое представление числа.
- НО, если длина числа больше вашего диапазона, то создайте буфер, например stackalloc, туда запихивайте начальные нули, а затем туда же строковое преставление числа.
- Возвращайте строку с пункта [2] или [3].