Значение int меньше 10 преобразовать в строковое двухзначное число


119
string strI;   

for (int i = 1; i < 100; i++)
    strI = i.ToString();

здесь, если i = 1тогда ToStringдает"1"

Но я хочу получить "01"или"001"

Выглядит довольно просто, но там только статья про

datetime.ToString("yyyy-MM-dd")`

Лучше всего публиковать код, который компилируется и запускается, tostirngэто неправильно. Также для программистов это 0xозначает , что вы имеете в виду шестнадцатеричную систему счисления. Вы ищете "ведущие нули".
Коби

@ Коби, извини, мой родной язык не английский, а английский на самом деле плохой. и я хожу в английскую школу каждый день, чтобы улучшить свой английский. Не могли бы вы понять меня. и я отредактировалtostirng
Сунгук Лим 01

Все нормально. Просто намек. В любом случае int.ToString может принимать формат, как и DateTime.ToString.
Коби

Ответы:



12

Принятый ответ хороший и быстрый:

i.ToString("00")

или

i.ToString("000")

Если вам нужно больше сложности, стоит попробовать String.Format :

var str1 = "";
var str2 = "";
for (int i = 1; i < 100; i++)
{
    str1 = String.Format("{0:00}", i);
    str2 = String.Format("{0:000}", i);
}

По i = 10делу:

str1: "10"
str2: "010"

Я использую это, например, для очистки текста в определенных элементах управления метками в моей форме по имени:

private void EmptyLabelArray()
{
    var fmt = "Label_Row{0:00}_Col{0:00}";
    for (var rowIndex = 0; rowIndex < 100; rowIndex++)
    {
        for (var colIndex = 0; colIndex < 100; colIndex++)
        {
            var lblName = String.Format(fmt, rowIndex, colIndex);
            foreach (var ctrl in this.Controls)
            {
                var lbl = ctrl as Label;
                if ((lbl != null) && (lbl.Name == lblName))
                {
                    lbl.Text = null;
                }
            }
        }
    }
}


6

Не могу поверить, что этого никто не предлагал:

int i = 9;
i.ToString("D2"); // Will give you the string "09"

или

i.ToString("D8"); // Will give you the string "00000009"

Если вы хотите шестнадцатеричный:

byte b = 255;
b.ToString("X2"); // Will give you the string "FF"

Вы даже можете использовать просто «C» для отображения в качестве валюты, если вы используете локализованный символ валюты. См. Здесь: https://docs.microsoft.com/en-us/dotnet/api/system.int32.tostring?view=netframework-4.7.2#System_Int32_ToString_System_String_


5

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

ссылка на троян удалена

редактировать

Ссылка была удалена, поскольку Google временно предупредил, что этот сайт (или связанный сайт) мог распространять вредоносное ПО. Теперь это исключено из списка и больше не считается проблемным. Google "SteveX String Formatting" вы найдете результат поиска и можете посетить его по своему усмотрению.


1
Этот сайт (сейчас) вызывает предупреждение о троянской программе.
Хенк Холтерман,

0

Вы также можете сделать это так

private static string GetPaddingSequence(int padding)
{
      StringBuilder SB = new StringBuilder();
      for (int i = 0; i < padding; i++)
      {
           SB.Append("0");
      }

      return SB.ToString();
  }

public static string FormatNumber(int number, int padding)
{
    return number.ToString(GetPaddingSequence(padding));
}

Наконец, вызовите функцию FormatNumber

string x = FormatNumber(1,2);

Вывод будет 01, что зависит от вашего параметра заполнения. При его увеличении количество нулей увеличивается.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.