В c # как использовать String.Формат для числа и поля слева с нулями, чтобы всегда было 6 символов

#c#

#c#

Вопрос:

Я хочу использовать формат c # для этого:

6 = «000006»
999999 = «999999»
100 = «000100»
-72 = ошибка
1000000 = ошибка

Я пытался использовать String.Формат, но безуспешно.

Ответ №1:

Форматирование не приведет к ошибке, если будет слишком много цифр. Вы можете получить 6-значную строку с заполнением слева только с помощью

 string output = number.ToString("000000"); 
 

Если вам нужно, чтобы 7-значные строки были недействительными, вам просто нужно это закодировать.

 if (number >= 0 and number < 1000000)
{
     output = number.ToString("000000")
}
else 
{
     throw new ArgumentException("number");
}
 

Чтобы использовать string.Формат, вы бы написали

 string output = string.Format("{0:000000}", number);
 

Комментарии:

1. Можно ли использовать String. Формат?

2. строка. Format() просто вызывает toString() для int, поэтому меньше накладных расходов, если вы используете toString() напрямую.

3. @phoog: если вы уже не используете String. Формат. Я настоятельно предпочитаю String. Format(«{0:ггггММдд}-{1:0000}-{2}», Дата и время. Теперь number, foo) поверх String . Формат(«{0}-{1}-{2}», DateTime.Now.toString(«ггггММдд»), число. toString(«0000»), foo)

4. @Timbo абсолютно. Зачем кому-то делать последнее?

5. @phoog: кто-то мог бы сделать последнее, если бы они небрежно / наивно следовали вашему совету, что форматирование чисел через toString имеет меньше накладных расходов, чем через string . Формат. Я просто указывал, что это верно только при работе с одним объектом.