C # converte int para string com zeros de preenchimento?


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+)


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


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.


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

66

Você pode usar:

int x = 1;
x.ToString("0000");

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

Este parece muito bom. Boa maneira de evitar$"some text {x.ToStrig("D4")} after text"
de Bruno Miquelin


4

Mole-mole

int i = 1;
i.ToString("0###")

3
Não sei por que você votou para baixo funciona e responde à pergunta ops
maeneak


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"  

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

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

-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.


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')

2
Desnecessariamente confuso, especialmente quando existe uma solução muito simples.
Juls
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.