Eu tenho um número que eu preciso converter em uma string. Primeiro eu usei isso:
Key = i.ToString();
Mas eu sei que ele está sendo classificado em uma ordem estranha e, portanto, preciso preenchê-lo com zeros. Como eu pude fazer isso?
Eu tenho um número que eu preciso converter em uma string. Primeiro eu usei isso:
Key = i.ToString();
Mas eu sei que ele está sendo classificado em uma ordem estranha e, portanto, preciso preenchê-lo com zeros. Como eu pude fazer isso?
Respostas:
Bastante simples:
Key = i.ToString("D2");
D
significa "número decimal", 2
o número de dígitos a serem impressos.
string.Format("D2", value)
obterá D2
a saída. isso não funciona. Devemos usar "{0:00}"
neste caso.
string.Format("{0:D2}", value)
lugar. Apenas dizer string.Format("D2", ...)
não substituirá nada, não importa, pois você não tem um espaço reservado.
value
for um int. Se value
for um duplo, por exemplo, terá que serstring.Format("{0:00}", value)
Consulte Formatação de string em C # para obter alguns exemplos de usos de String.Format
Na verdade, um exemplo melhor de formatação int
String.Format("{0:00000}", 15); // "00015"
ou use Interpolação de String :
$"{15:00000}"; // "00015"
Se você deseja mantê-lo com largura fixa, por exemplo, 10 dígitos, faça assim
Key = i.ToString("0000000000");
Substitua por quantos dígitos desejar.
i = 123
resultará em Key = "0000000123"
.
Como ninguém ainda mencionou isso, se você estiver usando o C # versão 6 ou superior (ou seja, Visual Studio 2015), poderá usar a interpolação de strings para simplificar seu código. Então, em vez de usar string.Format(...)
, você pode fazer isso:
Key = $"{i:D2}";
usar:
i.ToString("D10")
Consulte Int32.ToString (MSDN) e seqüências de formato numérico padrão (MSDN).
Ou use String.PadLeft
. Por exemplo,
int i = 321;
Key = i.ToString().PadLeft(10, '0');
Resultaria em 0000000321
. ApesarString.PadLeft
não funcionaria para números negativos.
Consulte String.PadLeft (MSDN).
Normalmente, String.Format ("formato", objeto) é preferível a object.ToString ("formato"). Portanto,
String.Format("{0:00000}", 15);
é preferível
Key = i.ToString("000000");
Experimentar:
Key = i.ToString("000000");
Pessoalmente, porém, eu veria se você não pode classificar o número inteiro diretamente, em vez da representação de string.
Para seqüências de caracteres interpoladas:
$"Int value: {someInt:D4} or {someInt:0000}. Float: {someFloat: 00.00}"
Aqui eu quero que o meu não limite em 4 dígitos, como se fosse 1, deveria aparecer como 0001, se 11, deveria aparecer como 0011 ... Abaixo estão os códigos.
reciptno=1;//Pass only integer.
string formatted = string.Format("{0:0000}", reciptno);
TxtRecNo.Text = formatted;//Output=0001..
Eu implementei esse código para gerar o recibo no.
int num=1;
string number=num.ToString().PadLeft(4, '0')
Saída = "00001"
EDIT: Alterado para corresponder ao valor PadLeft