¿C # convierte int a una cadena con ceros de relleno?

Respuestas:

709

i.ToString().PadLeft(4, '0')- está bien, pero no funciona para números negativos
i.ToString("0000");- forma explícita
i.ToString("D4");- especificador de formato de forma corta
$"{i:0000}";- interpolación de cadenas (C # 6.0+)

Arrendajo
fuente
28
i.ToString (). PadLeft (4, '0') NO funciona para números negativos, por ejemplo (-5). PadLeft (4, '0') será "00-5"
Antonio Bakula
55
cómo mostrar una cadena con longitud fija. ??
Mark Macneil Bikeio
3
@Rahul Lea esto: msdn.microsoft.com/en-us/library/…
Kevdog777
2
de esta manera funcionó para mí String.Format ("{0: D4}", número);
Arthur Melo
14
El uso del método abreviado de formato de cadena también funciona, por ejemplo, $ "{i: D4}";
JamesSugrue
275
i.ToString("D4");

Ver MSDN en los especificadores de formato.

Ryan
fuente
44
de esta manera funcionó para mí String.Format ("{0: D4}", número);
Arthur Melo
118

Aquí hay un buen ejemplo:

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
fuente
66

Puedes usar:

int x = 1;
x.ToString("0000");
Yodan Tauber
fuente
26
Y una segunda forma de usar la misma cadena de formato:string.Format("{0:0000}", x)
Yodan Tauber
57

Interpolación de cadenas de estilo C # 6.0

int i = 1;
var str1 = $"{i:D4}";
var str2 = $"{i:0000}";
Dr. Blowhard
fuente
Este se ve muy bien. Buena manera de evitar$"some text {x.ToStrig("D4")} after text"
Bruno Miquelin
18
i.ToString("0000");
Justin Niessner
fuente
4

Pan comido

int i = 1;
i.ToString("0###")
maeneak
fuente
3
no sé por qué usted abajo anotó funciona y responde a la pregunta ops
maeneak
3

Simplemente

int i=123;
string paddedI = i.ToString("D4");
cahit beyaz
fuente
8
También agregue complejidad.
Giulio Caccin
arreglado para números negativos.
cahit beyaz
Corregido por complejidad
cahit beyaz
2

.NET tiene una función fácil para hacer eso en la Stringclase. Solo usa:

.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
fuente
Esto funciona si tiene una longitud fija de cadena con un número que cambia. ¡Gracias por esto! :)
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
Sarga
fuente
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
fuente
-2

Aquí quiero rellenar mi número con 4 dígitos. Por ejemplo, si es 1, debería aparecer como 0001, si es 11, debería aparecer como 0011.

A continuación se muestra el código que logra esto:

reciptno=1; // Pass only integer.

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

TxtRecNo.Text = formatted; // Output=0001

Implementé este código para generar el número de recibo de dinero para un archivo PDF.

saktiprasad swain
fuente
1
¿Por qué estás editando mi respuesta sólo para letra mayúscula o sentencia structure.Is TI necesarios Un desarrollador debe tener preocupación en código no en la estructura de la oración
saktiprasad Swain
@Unheilig Soy nuevo en stackoverflow. Creo que mi punto se reduce cuando editas mi respuesta.
saktiprasad swain
3
Como señala, usted es nuevo en esta comunidad y no está familiarizado con el sistema de edición, no ha perdido ningún punto de la edición propuesta y aprobada por la comunidad. Las ediciones que se hicieron en realidad mejoraron significativamente su respuesta
Security Hound
1
La votación es en realidad anónima. El voto negativo se emitió debido a la mala gramática. Hubiera votado si hubieras aceptado la propuesta de edición
Security Hound
-5

Para rellenar int ipara que coincida con la longitud de la cadena de int x, cuando ambos pueden ser negativos:

i.ToString().PadLeft((int)Math.Log10(Math.Abs(x < 0 ? x * 10 : x)) + 1, '0')
xnp
fuente
2
Innecesariamente confuso, especialmente cuando hay una solución muy simple.
Julio