C # converte int para string com zeros de preenchimento?

438

No C #, tenho um valor inteiro que precisa ser convertido em string, mas precisa adicionar zeros antes:

Por exemplo:

int i = 1;

Quando o converto em string, ele deve se tornar 0001

Eu preciso conhecer a sintaxe em c #.

Pinu
fonte
1
Isso pode ajudá-lo - Como: Colocar um número com zeros à esquerda . Boa sorte #
Koonwah

Respostas:

706

i.ToString().PadLeft(4, '0')- ok, mas não funciona para números negativos
i.ToString("0000");- formulário explícito
i.ToString("D4");- especificador de formato abreviado
$"{i:0000}";- interpolação de strings (C # 6.0+)

Jay
fonte
27
i.ToString (). PadLeft (4, '0') NÃO funciona para números negativos, por exemplo (-5) .PadLeft (4, '0') será "00-5"
Antonio Bakula
5
como exibir uma string com comprimento fixo. ??
MarkMinneil Bikeio
3
@Rahul Leia isto: msdn.microsoft.com/en-us/library/…
Kevdog777
2
dessa maneira funcionou para mim String.Format ("{0: D4}", número);
Arthur Melo
14
O uso do atalho no formato String também funciona, por exemplo, $ "{i: D4}";
JamesSugrue
274
i.ToString("D4");

Veja MSDN sobre especificadores de formato.

Ryan
fonte
4
dessa maneira funcionou para mim String.Format ("{0: D4}", número);
Arthur Melo
118

Aqui está um bom exemplo:

int number = 1;
//D4 = pad with 0000
string outputValue = String.Format("{0:D4}", number);
Console.WriteLine(outputValue);//Prints 0001
//OR
outputValue = number.ToString().PadLeft(4, '0');
Console.WriteLine(outputValue);//Prints 0001 as well
Denys Wessels
fonte
66

Você pode usar:

int x = 1;
x.ToString("0000");
Yodan Tauber
fonte
26
E uma segunda maneira de usar a mesma string de formato:string.Format("{0:0000}", x)
Yodan Tauber
57

Interpolação de seqüência de caracteres do estilo C # 6.0

int i = 1;
var str1 = $"{i:D4}";
var str2 = $"{i:0000}";
Dr. Blowhard
fonte
Este parece muito bom. Boa maneira de evitar$"some text {x.ToStrig("D4")} after text"
de Bruno Miquelin
18
i.ToString("0000");
Justin Niessner
fonte
4

Mole-mole

int i = 1;
i.ToString("0###")
Maeneak
fonte
3
Não sei por que você votou para baixo funciona e responde à pergunta ops
maeneak
3

Simplesmente

int i=123;
string paddedI = i.ToString("D4");
cahit beyaz
fonte
8
Adicione também complexidade.
Giulio Caccin
fixo para números negativos.
você precisa saber é o seguinte
Corrigido por complexidade
cahit beyaz 08/07/19
2

O .NET tem uma função fácil de fazer isso na Stringclasse. Apenas use:

.ToString().PadLeft(4, '0')  // that will fill your number with 0 on the left, up to 4 length

int i = 1; 
i.toString().PadLeft(4,'0')  // will return "0001"  
Hernan
fonte
Isso funciona se você tiver um comprimento fixo de sequência com um número que muda. Obrigado por isso! :)
Fen Ignacio
0
int p = 3; // fixed length padding
int n = 55; // number to test

string t = n.ToString("D" + p); // magic     

Console.WriteLine("Hello, world! >> {0}", t);

// outputs: 
// Hello, world! >> 055
Sarja
fonte
0
public static string ToLeadZeros(this int strNum, int num)
{
    var str = strNum.ToString();
    return str.PadLeft(str.Length + num, '0');
}

// var i = 1;
// string num = i.ToLeadZeros(5);
Demodave
fonte
-2

Aqui eu quero preencher meu número com 4 dígitos. Por exemplo, se for 1, deve aparecer como 0001, se 11, como 0011.

Abaixo está o código que realiza isso:

reciptno=1; // Pass only integer.

string formatted = string.Format("{0:0000}", reciptno);

TxtRecNo.Text = formatted; // Output=0001

Eu implementei esse código para gerar um número de recebimento de dinheiro para um arquivo PDF.

swain saktiprasad
fonte
1
? Por que você está editando minha resposta apenas para letra maiúscula ou structure.Is sentença de TI necessárias Um desenvolvedor deve ter preocupação em código não na estrutura da frase
saktiprasad swain
@Unheilig Eu sou novo no stackoverflow.I acho que meu ponto é reduzido quando você editou minha resposta.
Saktiprasad swain,
3
Como você ressalta, você é novo nesta comunidade e não conhece o sistema de edição, não perdeu pontos na edição que foi proposta e aprovada pela comunidade. As edições que foram feitas realmente melhorou significativamente a sua resposta
Segurança Hound
1
A votação é realmente anônima. O voto negativo foi emitido por causa da gramática ruim. Teria upvoted se você tivesse aceitado a proposta de edição
Segurança Hound
-5

Para preencher int ipara coincidir com o comprimento da cadeia int x, quando ambos podem ser negativos:

i.ToString().PadLeft((int)Math.Log10(Math.Abs(x < 0 ? x * 10 : x)) + 1, '0')
xnp
fonte
2
Desnecessariamente confuso, especialmente quando existe uma solução muito simples.
Juls