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пропонується посилатися на шістнадцяткову базу. Ви шукаєте "провідні нулі".
Кобі

@Kobi Вибачте, моя рідна мова - не англійська, а моя англійська - насправді погана. і я відвідую англійську школу щодня, щоб вдосконалити свою англійську. Не могли б ви зрозуміти мене. і я відредагувавtostirng
Sungguk Lim

Це добре. Просто натяк. У будь-якому випадку, 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, який базується на вашому параметрі прокладки. Збільшення його збільшить кількість 0с

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.