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?
c#
string
string-formatting
Mandy Weston
fonte
fonte
Respostas:
Bastante simples:
D
significa "número decimal",2
o número de dígitos a serem impressos.fonte
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 dizerstring.Format("D2", ...)
não substituirá nada, não importa, pois você não tem um espaço reservado.value
for um int. Sevalue
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
ou use Interpolação de String :
fonte
Se você deseja mantê-lo com largura fixa, por exemplo, 10 dígitos, faça assim
Substitua por quantos dígitos desejar.
i = 123
resultará emKey = "0000000123"
.fonte
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:fonte
usar:
Consulte Int32.ToString (MSDN) e seqüências de formato numérico padrão (MSDN).
Ou use
String.PadLeft
. Por exemplo,Resultaria em
0000000321
. ApesarString.PadLeft
não funcionaria para números negativos.Consulte String.PadLeft (MSDN).
fonte
Normalmente, String.Format ("formato", objeto) é preferível a object.ToString ("formato"). Portanto,
é preferível
fonte
Experimentar:
Pessoalmente, porém, eu veria se você não pode classificar o número inteiro diretamente, em vez da representação de string.
fonte
Para seqüências de caracteres interpoladas:
fonte
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.
Eu implementei esse código para gerar o recibo no.
fonte
Saída = "00001"
EDIT: Alterado para corresponder ao valor PadLeft
fonte