int wartość poniżej 10 zamień na ciąg dwucyfrową liczbę


119
string strI;   

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

tutaj, jeśli i = 1to ToStringustąpi"1"

Ale chcę dostać "01"lub"001"

Wygląda to dość łatwo, ale jest tylko artykuł o

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

Najlepiej napisać kod, który kompiluje się i działa, tostirngnie jest właściwy. Również programistom 0xsugeruje, że odnosisz się do bazy szesnastkowej. Szukasz „wiodących zer”.
Kobi

@Kobi przepraszam, moim językiem ojczystym nie jest angielski, a mój angielski jest właściwie zły. i chodzę codziennie do szkoły angielskiego, aby poprawić swój angielski. Czy mógłbyś mnie zrozumieć. i zredagowałemtostirng
Sungguk Lim

W porządku. Tylko podpowiedź. W każdym razie int.ToString może przyjąć format, tak jak DateTime.ToString.
Kobi

Odpowiedzi:



12

Przyjęta odpowiedź jest dobra i szybka:

i.ToString("00")

lub

i.ToString("000")

Jeśli potrzebujesz większej złożoności, warto spróbować 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);
}

W i = 10przypadku:

str1: "10"
str2: "010"

Używam tego na przykład, aby wyczyścić tekst na poszczególnych kontrolkach etykiet w moim formularzu według nazwy:

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

Nie mogę uwierzyć, że nikt tego nie zasugerował:

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

lub

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

Jeśli chcesz szesnastkowo:

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

Możesz nawet użyć tylko „C”, aby wyświetlić jako walutę, jeśli masz lokalny symbol waluty. Zobacz tutaj: https://docs.microsoft.com/en-us/dotnet/api/system.int32.tostring?view=netframework-4.7.2#System_Int32_ToString_System_String_


5

Ten wpis na blogu jest świetną, małą ściągawką, która przydaje się podczas próby formatowania ciągów znaków do różnych formatów.

link do trojana usunięty

Edytować

Link został usunięty, ponieważ Google tymczasowo ostrzegł, że ta witryna (lub powiązana witryna) mogła rozpowszechniać złośliwe oprogramowanie. Jest teraz z listy i nie jest już zgłaszany jako problematyczny. Google „SteveX String Formatting” znajdziesz wynik wyszukiwania i możesz go odwiedzić według własnego uznania.


1
Ta witryna (teraz) uruchamia ostrzeżenie przed trojanem.
Henk Holterman

0

Ty też możesz to zrobić w ten sposób

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));
}

Na koniec wywołaj funkcję FormatNumber

string x = FormatNumber(1,2);

Wynik będzie 01, który jest oparty na parametrze wypełnienia. Zwiększenie go zwiększy liczbę zer

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.