¿Cómo puedo formatear un número en una cadena con ceros a la izquierda?


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 y así que necesito rellenarlo con ceros. ¿Cómo podría hacer esto?

Author: Peter Mortensen, 2011-03-24

9 answers

Bastante simple:

Key = i.ToString("D2");

D significa "número decimal", 2 para el número de dígitos a imprimir.

 268
Author: Mario,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-03-27 09:52:33

Ver Formato de cadena en C# para algunos usos de ejemplo de cadena.Formato

En realidad un mejor ejemplo de formateo int

String.Format("{0:00000}", 15);          // "00015"
 166
Author: Paul,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-07-19 21:04:44

Si desea mantenerlo 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".

 55
Author: Øyvind Bråthen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-02-28 11:01:18

Dado que nadie ha mencionado esto todavía, si está utilizando C# versión 6 o superior (es decir, Visual Studio 2015), puede usar interpolación de cadenas para simplificar su código. Así que en lugar de usar string.Format(...), puedes hacer esto:

Key = $"{i:D2}";
 44
Author: DavidG,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-04-10 22:25:56

Uso:

i.ToString("D10")

Véase Int32.toString (MSDN), y Cadenas de Formato Numérico Estándar (MSDN).

O utilizar String.PadLeft. Por ejemplo,

int i = 321;
Key = i.ToString().PadLeft(10, '0');

Resultaría en 0000000321. Aunque String.PadLeft no funcionaría para números negativos.

Ver Cadena.PadLeft (MSDN).

 25
Author: firefox1986,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-08 13:46:51

Normalmente String.Format ("format", object) es preferible a object.ToString("formato"). Por lo tanto,

String.Format("{0:00000}", 15);  

Es preferible a,

Key = i.ToString("000000");
 13
Author: Chameera Dedduwage,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-04-16 06:14:43

Intenta:

Key = i.ToString("000000");

Personalmente, sin embargo, me gustaría ver si no se puede ordenar en el entero directamente, en lugar de la representación de cadena.

 11
Author: Marc Gravell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-03-24 11:25:36

Aquí quiero que mi no limite en 4 dígitos como si es 1 debería mostrar como 0001,si es 11 debería mostrar 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.

 2
Author: saktiprasad swain,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-21 06:31:23
int num=1;
string number=num.ToString().PadLeft(5, '0')

Output = "00001"

 -1
Author: Gayan Chinthaka Dharmarathna,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-04 10:45:07