Формат строки в .NET: преобразовать целое число в строку фиксированной ширины? - PullRequest
24 голосов
/ 19 июня 2011

У меня есть int в .NET / C #, который я хочу преобразовать в специально отформатированную строку.

Если значение равно 1, я хочу, чтобы строка была "001".

10 = "010".

116 = "116".

и т. Д.

Я смотрю на форматирование строк, но пока безуспешно.У меня также не будет значений свыше 999.

Ответы [ 5 ]

45 голосов
/ 19 июня 2011

Самый простой способ сделать это - использовать встроенную функциональность .NET для этого:

var r = 10;
var p = r.ToString("000");

Нет необходимости в зацикливании или заполнении.

21 голосов
/ 19 июня 2011

Взгляните на PadLeft.

ex:

int i = 40;

string s = i.ToString().PadLeft(3, '0'); 

s == "040"

11 голосов
/ 19 июня 2011

Другой вариант будет:

i.ToString("d3")
6 голосов
/ 19 июня 2011

Я помню, как видел код, подобный этому, чтобы дополнить числа нулями ...

int[] nums = new int[] { 1, 10, 116 };

foreach (int i in nums)
{
    Console.WriteLine("{0:000}", i);
}

Выход:

001
010
116
0 голосов
/ 19 июня 2011

Каждый раз, когда мне нужно было добавить что-то в начало строки, чтобы соответствовать критериям, подобным этому, я использовал цикл while.Примерно так:

while (myString.length < 5) myString = "0" + myString;

Хотя может быть и способ string.format, но и раньше это прекрасно работало.

...