Строка.Формат неправильно форматируется

#vb.net #string.format

Вопрос:

У меня есть следующий код, и я не могу правильно его отформатировать. Он игнорирует мои форматы. Например, сОрдерНо-это не 10 нулей, это всего лишь 1 ноль. Что я здесь делаю не так?

 sKey = String.Format("{0:D10} {1:00} {2} {3} {4} {5}   {6} {7} {8:000.0000} {9:000.0000}",
       sOrderNo, sItem, sSpecies, sSpSort, rs.Fields("UsageCode").Value,
       rs.Fields("Cure").Value, sGrade, sSurface, 
       rs.Fields("TkFactor").Value,rs.Fields("WdFactor").Value)
                             
 

Ответ №1:

сОрдерНо-это не 10 нулей,

Необходимая для этого строка формата D10 -нет 10D . Простоя: документация подразумевает, что возможно только до D9, но она работает с 10 и даже до 99

     Console.WriteLine(string.Format("Hello World {0:D99}", 12345));
 

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

1. {0:D10} также не работает, и {1:D2} или {1:00} не работают для sItem. Я смог получить то, что мне нужно: «{0} {1} и т. Д….», Cint(sOrderNo). toString(«D10»), Cint(sItem). toString(«D2») и т. Д… Просто не понимаю, почему приведенный выше исходный код даже с исправленным D10 не работает.

2. sOrderNo должно быть числом, а не числовой строкой..

3. В моей ссылке «до 99» вы заметите, что я передаю целое число 12345, а не строку «12345». Единственное, что вы можете сделать со строками, — это заполнить их слева или справа пробелами, используя, например {0:-50} , или {0:50} для «шириной до 50», минус/плюс, диктующий выравнивание строки в поле