AskalotLearnalot Ответов: 1

Сохранение нулей от пользовательского ввода перед числами C#


Я создаю программу, которая принимает пользовательский ввод и увеличивает его.
Предположим, что вход равен 001, это будет 002, 003 и т. д.
предположим, что вход равен 01, это будет 02, 03 и т. д
предположим, что вход равен 1, это будет 2, 3 и так далее.
Я знаю, что мы должны преобразовать входные данные в строку, сохранить заполнение нулей, увеличить int и собрать 2 переменные вместе, но я не знаю, как это реализовать.
Вот что у меня есть.

Что я уже пробовал:

int Number = number;
    foreach (FileInfo file in files)
            {
 graphics.DrawString((preFix + (Number++).ToString().PadLeft(batesNumber, '0')), font, brush, position);
}

Я думаю, что мне нужно сделать заполнение вне foreach и заменить '0' переменной строкой, которая имеет количество нулей на основе пользовательского ввода. затем увеличивать интервал внутри Экспофорум forech и просто добавить строку из нулей, что int. Спасибо

Richard MacCutchan

Вам просто нужно сканировать входные данные в виде строки и подсчитать количество цифр. Затем вы можете использовать это значение для установки отступа на выходе.

1 Ответов

Рейтинг:
12

Tomas Takac

Я бы сделал это вот так:

string input = "000001";
int padding = input.Length;
string template = string.Format("{{0:d0{0}}}", padding); // {0:d04}

for (int number = 1; number < 15; number++)
{
    var paddedNumber = string.Format(template, number);
    Console.WriteLine(paddedNumber);
}


AskalotLearnalot

Спасибо за повтор,я думаю, что это пренебрегает вводом пользователя. насколько я понимаю заполнение всегда будет 4 или меньше что делать если пользователь введет 000001

Tomas Takac

Я обновил решение, а что теперь?

AskalotLearnalot

если пользователь вводит 01, то выход будет 000001, он должен быть 01 и т. д.

Tomas Takac

Я не понимаю. То вход переменная в образце представляет ваши входные данные. Попробуйте запустить его с помощью вход = "01" и вы увидите, что это работает.

AskalotLearnalot

Вы очень правы, мне очень жаль, что я ответил Слишком быстро. Спасибо за разъяснение вот что я сделал:

string Number = number;
int padding = Number.Length;
string template = string.Format("{{0:d0{0}}}", padding);
foreach{
//(padding++)) will make number start at user input then ++ 
 var paddedNumber = string.Format(template, (padding++)); 
  graphics.DrawString((preFix + (paddedNumber)), font, brush, position);
}

надеюсь, когда-нибудь у меня будет достаточно знаний, чтобы помочь другим, как это делаете вы

Tomas Takac

Отличный. Кстати, я не думаю, что вы хотите увеличивать отступы. Вместо этого вы можете сделать что-то вроде этого:
int padding = ввод.Длина;
int number = int.Parse(input);
инструкция foreach... номер++

AskalotLearnalot

если бы вы могли это объяснить, это было бы еще лучше.как эта часть
string template = строка.Формат("{{0:d0{0}}}", заполнение);

Tomas Takac

Это создает шаблон формата строки, {{ и }} должен экранировать фигурные скобки, чтобы поставить create string like {0:d0<your number="" here="">}. Теперь я думаю, что это проще:
формат строки = string.Формат("d0{0}", заполнение);
int paddedNumber = число.ToString(формат);

AskalotLearnalot

спасибо.