Tengo números almacenados en una base de datos, y algunos tienen un cero como primer dígito, ya que siempre deben tener un cierto número de dígitos. Tengo un cuadro de texto que tiene este número escrito en él, 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?Convert.ToInt32 - Mantener precedente cero
Respuesta
La única manera de mantener los ceros precedentes es no convertirlo a un número.
Un número no tiene ceros anteriores ya que solo contiene el valor, no la cadena de representación del valor.
Si desea convertirlo a un número y luego volver a convertirlo en una cadena, recreando los ceros precedentes, se puede utilizar un formato personalizado:
string formatted = number.ToString("00000");
o para un número dinámico de dígitos:
string formatted = number.ToString(new String('0', numberOfDigits));
+1 para explicar ambas opciones, porque la mejor solución depende de la naturaleza de los datos (imo) – Thorarin
¿No es 'number.ToString(). PadLeft (numberOfDigits, '0')' más fácil? Al menos, es más fácil de leer, diría ... :) – Svish
Me preocupan los valores negativos cuando hago un relleno como este. Por ejemplo, su opción PadLeft se vería así: "00-9" en lugar de -009. – Codesleuth
Si necesita mantener un cero relleno, entonces mantenga el valor como una Cadena. Los enteros no pueden mantener información sobre ceros acolchados, ya que simplemente representan un número.
Si necesita validar el número ingresado, use Int32.TryParse o haga coincidir el valor con regular expression (como "^\d+$"
).
Editar: Además de Guffa's answer, puede utilizar "D" (MSDN) para dar formato a un número determinado de caracteres (con relleno de ceros, si es necesario):
string formatted = number.ToString("D5"); // 13 -> 00013
+1, para insinuar sobre el especificador de formato decimal ("D"). Dado que la pregunta especifica 'Convert.ToInt32()', este es mi método preferido para rellenar el valor. – Codesleuth
debe utilizar el formato de cadena para mantener el cero:
int fooValue = Convert.ToInt32(TextBox.Text)
//operations with foo Value
string formatValue = fooValue.ToString("#0000");
la forma Lo haría cuando el número se devuelva a la base de datos en lugar de alimentarlo int
use string
usando myint.ToString("0000000")
. Con el número de 0 es la longitud total del número acolchado.
Esto también debería funcionar.
123.ToString().PadLeft(5, '0'); // 0
Como comentó sobre el comentario de Svish, esto crearía resultados extraños con enteros negativos. – Codesleuth
- 1. Formato decimal C# - Mantener el último cero
- 2. Int32.Parse() VS Convert.ToInt32()?
- 3. Convert.ToInt32 versus TryParse
- 4. Precedente del operador de Python
- 5. mejor uso int.Parse o Convert.ToInt32
- 6. Convert.ToInt32() una cadena con Comas
- 7. ¿Por qué existe Convert.ToInt32 (DateTime)?
- 8. ¿Por qué usar Convert.ToInt32 sobre el casting?
- 9. ¿Cómo busco "\ n" sin un precedente "\ r" en vim?
- 10. Precedente real para operadores de infijo en Scala
- 11. ¿Cuál es la principal diferencia entre Convert.ChangeType o Convert.ToInt32?
- 12. C# ¿Por qué este retorno 49: Convert.ToInt32 ('1')
- 13. devuelve cero
- 14. Extender el compilador de Mono C#: ¿hay alguna documentación o precedente?
- 15. ¿Cómo reemplazar cada 0 con el elemento precedente en una lista de manera idiomática en Mathematica?
- 16. UIScrollView y CATiledLayer desde cero
- 17. Mejor expresión de ruby para "cero o cero"
- 18. Es menos cero (-0) equivalente a cero (0) en C#
- 19. Clave externa que también puede ser cero
- 20. Tamaño cero struct
- 21. BigDecimal multiplicar por cero
- 22. cero final en decimal
- 23. java.util.Random argumento cero consulta
- 24. jstl cero negativo
- 25. MySQL Eliminar cero pendiente
- 26. C# GetProcAddress Devuelve cero
- 27. Botón Tweet - ocultando cero
- 28. Programación desde cero
- 29. Matriz de longitud cero
- 30. Dividir por cero prevención
Si quiere un cero a la izquierda, seguramente no quiere convertir a Int32? ¿Por qué no mantenerlo como una cadena? –
no creo que puedas quedármelos. pero puede formatear el int convertido para volver a mostrarlos: http://msdn.microsoft.com/en-us/library/dd260048.aspx –
@Matt porque el tipo de base de datos es un Int – Grace