Tengo un número que necesito convertir en una cadena. Primero usé esto:
Key = i.ToString();
Pero me doy cuenta de que se está ordenando en un orden extraño, por lo que necesito rellenarlo con ceros. ¿Cómo podría hacer esto?
Tengo un número que necesito convertir en una cadena. Primero usé esto:
Key = i.ToString();
Pero me doy cuenta de que se está ordenando en un orden extraño, por lo que necesito rellenarlo con ceros. ¿Cómo podría hacer esto?
Respuestas:
Bastante simple:
Key = i.ToString("D2");
D
significa "número decimal", 2
el número de dígitos para imprimir.
string.Format("D2", value)
usas obtendrás D2
la salida. Esto no funciona. Debemos usar "{0:00}"
en este caso.
string.Format("{0:D2}", value)
en su lugar. Solo decir string.Format("D2", ...)
que no reemplazará nada, pase lo que pase, ya que no tiene un marcador de posición.
value
es un int. Si value
es un doble, por ejemplo, tendrá que serstring.Format("{0:00}", value)
Consulte el formato de cadenas en C # para ver algunos ejemplos de usos de String.
En realidad, un mejor ejemplo de formateo int
String.Format("{0:00000}", 15); // "00015"
o use la interpolación de cadenas :
$"{15:00000}"; // "00015"
Si desea mantener el ancho fijo, por ejemplo 10 dígitos, hágalo así
Key = i.ToString("0000000000");
Reemplace con tantos dígitos como desee.
i = 123
entonces resultará en Key = "0000000123"
.
Como nadie ha mencionado esto aún, si está utilizando C # versión 6 o superior (es decir, Visual Studio 2015), puede usar la interpolación de cadenas para simplificar su código. Entonces, en lugar de usar string.Format(...)
, puedes hacer esto:
Key = $"{i:D2}";
utilizar:
i.ToString("D10")
Consulte Int32.ToString (MSDN) y cadenas de formato numérico estándar. (MSDN).
O usar String.PadLeft
. Por ejemplo,
int i = 321;
Key = i.ToString().PadLeft(10, '0');
Daría como resultado 0000000321
. AunqueString.PadLeft
no funcionaría para números negativos.
Ver String.PadLeft (MSDN).
Por lo general, String.Format ("formato", objeto) es preferible a object.ToString ("formato"). Por lo tanto,
String.Format("{0:00000}", 15);
es preferible a
Key = i.ToString("000000");
Tratar:
Key = i.ToString("000000");
Sin embargo, personalmente vería si no puede ordenar el número entero directamente, en lugar de la representación de cadena.
Para cadenas interpoladas:
$"Int value: {someInt:D4} or {someInt:0000}. Float: {someFloat: 00.00}"
Aquí quiero que mi no se limite en 4 dígitos, como si fuera 1, debería aparecer como 0001, si es 11, debería aparecer como 0011 ... A continuación se muestra el código.
reciptno=1;//Pass only integer.
string formatted = string.Format("{0:0000}", reciptno);
TxtRecNo.Text = formatted;//Output=0001..
Implementé este código para generar el recibo de dinero no.
int num=1;
string number=num.ToString().PadLeft(4, '0')
Salida = "00001"
EDITAR: cambiado para coincidir con la cantidad de PadLeft