string strI;
for (int i = 1; i < 100; i++)
strI = i.ToString();
здесь, если i = 1
, то ToString
дает "1"
Но я хочу получить "01"
или "001"
Это выглядит довольно просто, но есть только статья о
datetime.ToString("yyyy-MM-dd")`
string strI;
for (int i = 1; i < 100; i++)
strI = i.ToString();
здесь, если i = 1
, то ToString
дает "1"
Но я хочу получить "01"
или "001"
Это выглядит довольно просто, но есть только статья о
datetime.ToString("yyyy-MM-dd")`
i.ToString("00")
или
i.ToString("000")
в зависимости от того, что вы хотите
Посмотрите статью MSDN на пользовательские строки числового формата для получения дополнительных параметров: http://msdn.microsoft.com/en-us/library/0c899ak8(VS.71).aspx
ToString может принимать формат. попробуйте:
i.ToString("000");
Принятый ответ хорош и быстр:
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;
}
}
}
}
}
Этот пост в блоге - отличный маленький чит-лист, который поможет вам прикрепить строки к различным форматам.
ссылка на удаленный троян
Изменить
Ссылка была удалена, поскольку Google временно предупредил, что сайт (или связанный сайт), возможно, распространял вредоносное программное обеспечение. В настоящее время он отсутствует в списке, который больше не упоминается как проблемный. Google "SteveX String Formatting" вы найдете результат поиска, и вы можете посетить его по своему усмотрению.
Вы также можете сделать это так
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, который основан на вашем параметре заполнения. Увеличение его приведет к увеличению числа 0
Я не могу поверить, что никто не предложил это:
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_