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.