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


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


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.


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

66

Puedes usar:

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

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

Este se ve muy bien. Buena manera de evitar$"some text {x.ToStrig("D4")} after text"
Bruno Miquelin


4

Pan comido

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

3
no sé por qué usted abajo anotó funciona y responde a la pregunta ops
maeneak


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"  

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

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

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.


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

2
Innecesariamente confuso, especialmente cuando hay una solución muy simple.
Julio
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.