valor int abaixo de 10 convertido em string número de dois dígitos

119
string strI;   

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

aqui, se i = 1então ToStringproduzir"1"

Mas eu quero obter "01"ou"001"

Parece muito fácil, mas há apenas um artigo sobre

datetime.ToString("yyyy-MM-dd")`
Sungguk Lim
fonte
É melhor postar código que compila e executa, tostirngnão está certo. Além disso, para programadores, 0xsugere que você está se referindo à base hexadecimal. Você está procurando por "zeros à esquerda".
Kobi
@Kobi desculpe, minha língua nativa não é o inglês e meu inglês é realmente ruim. e eu vou para a escola de inglês todos os dias para melhorar meu inglês. Você poderia me entender. e eu editei otostirng
Sungguk Lim de
Isso está ok. Apenas uma dica. De qualquer forma, int.ToString pode assumir um formato, assim como DateTime.ToString.
Kobi

Respostas:

12

A resposta aceita é boa e rápida:

i.ToString("00")

ou

i.ToString("000")

Se você precisar de mais complexidade, vale a pena tentar 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);
}

Para o i = 10caso:

str1: "10"
str2: "010"

Eu uso isso, por exemplo, para limpar o texto em determinados controles de rótulo em meu formulário por nome:

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;
                }
            }
        }
    }
}
jp2code
fonte
6

Não acredito que ninguém sugeriu isso:

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

ou

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

Se você quiser hexadecimal:

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

Você pode até usar apenas "C" para exibir como moeda se você definir o símbolo da moeda local. Veja aqui: https://docs.microsoft.com/en-us/dotnet/api/system.int32.tostring?view=netframework-4.7.2#System_Int32_ToString_System_String_

nivs1978
fonte
5

Esta postagem do blog é uma ótima folha de dicas para manter à mão ao tentar formatar strings em uma variedade de formatos.

link para trojan removido

Editar

O link foi removido porque o Google avisou temporariamente que o site (ou site relacionado) pode estar espalhando software malicioso. Agora ele está fora da lista e não é mais relatado como problemático. Google "SteveX String Formatting" você encontrará o resultado da pesquisa e poderá visitá-lo conforme desejar.

Dave White
fonte
1
Esse site (agora) dispara um aviso de trojan.
Henk Holterman
0

Você também pode fazer desta forma

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

Finalmente chame a função FormatNumber

string x = FormatNumber(1,2);

A saída será 01, com base no parâmetro de preenchimento. Aumentar aumentará o número de 0s

VIjayendra
fonte