Convert.ToInt32 – Keep Preceder Zero

Tengo números almacenados en una base de datos, y algunos tienen un cero como su primer dígito, ya que siempre deben tener una cierta cantidad de dígitos. Tengo un cuadro de texto que tiene este número escrito, así que hago un Convert.ToInt32 (TextBox.Text), que elimina el cero inicial si tiene uno. ¿Alguien tiene alguna idea de cómo puedo mantener el cero, o agregarlo al inicio después de la conversión?

La única forma de mantener los ceros anteriores es no convertirlo en un número.

Un número no tiene ceros precedentes, ya que solo contiene el valor, no la cadena de representación del valor.

Si desea convertirlo en un número y luego volver a convertirlo en una cadena, recreando los ceros anteriores, puede usar un formato personalizado:

string formatted = number.ToString("00000"); 

O para un número dynamic de dígitos:

 string formatted = number.ToString(new String('0', numberOfDigits)); 

Si necesita mantener un cero rellenado, entonces mantenga el valor como una Cadena. Los enteros no pueden mantener información sobre ceros rellenados, ya que simplemente representan un número.

Si necesita validar el número ingresado, use Int32.TryParse o haga coincidir el valor con una expresión regular (como "^\d+$" ).

Edición: Además de la respuesta de Guffa , puede usar “D” ( MSDN ) para dar formato a un número específico de caracteres (con relleno cero, si es necesario):

 string formatted = number.ToString("D5"); // 13 -> 00013 

La forma en que lo haría es cuando el número se devuelve a la base de datos en lugar de darle un int Utilice una string utilizando myint.ToString("0000000") . Con el número de 0 es la longitud total del número rellenado.

Debe usar el formato de cadena para mantener el cero inicial:

 int fooValue = Convert.ToInt32(TextBox.Text) //operations with foo Value string formatValue = fooValue.ToString("#0000"); 

Esto también debería funcionar.

 123.ToString().PadLeft(5, '0'); // 00123