Compartir a través de


Analizar cadenas numéricas

Todos los tipos numéricos tienen un método Parse estático que se puede utilizar para convertir la representación de cadena de un tipo numérico en un tipo numérico propiamente dicho. Estos métodos permiten analizar cadenas que se crearon con uno de los especificadores de formato de los que se trata en la sección Cadenas de formato numérico.

Los caracteres que se utilizan para representar símbolos de moneda, separadores de miles y comas decimales se definen en proveedores de formato. El método Parse acepta un proveedor de formato, lo que permite especificar y analizar explícitamente cadenas específicas de referencia cultural. Si no se especifica ningún proveedor de formato, se utiliza el proveedor asociado al subproceso actual. Para obtener más información, vea Información general acerca de formatos.

En el ejemplo de código siguiente se convierte una cadena en un valor entero, se incrementa dicho valor y se muestra el resultado.

Dim MyString As String = "12345"
Dim MyInt As Integer = Integer.Parse(MyString)
MyInt += 1
Console.WriteLine(MyInt)
' The result is "12346".
string MyString = "12345";
int MyInt = int.Parse(MyString);
MyInt++;
Console.WriteLine(MyInt); 
// The result is "12346". 

La enumeración NumberStyles indica el formato de cadena que se puede analizar. Esta enumeración se puede usar para analizar una cadena que contiene un símbolo de moneda, un coma decimal, un exponente, paréntesis, etc. Por ejemplo, en la referencia cultural en-US, no se puede convertir una cadena que contenga una coma en un valor entero utilizando el método Parse si no se pasa la enumeración NumberStyles.AllowThousands.

NumberStyles.AllowCurrencySymbol especifica que un número se debe analizar como moneda y no como decimal. NumberStyles.AllowDecimalPoint indica que se puede utilizar una coma decimal. Las propiedades NumberDecimalSeparator o CurrencyDecimalSeparator del objeto NumberFormatInfo actual determinan los caracteres de la coma decimal válidos. NumberStyles.AllowThousands indica que se pueden utilizar separadores de grupo. Las propiedades NumberGroupSeparator o CurrencyGroupSeparator del objeto NumberFormatInfo actual determinan los caracteres de separador de grupo válidos. Para obtener una tabla completa de tipos de carácter no numéricos válidos, vea la documentación de la enumeración NumberStyles.

La enumeración NumberStyles utiliza los caracteres que especifica la referencia cultural actual para ayudar a realizar el análisis. Si no se especifica una referencia cultural pasando un objeto CultureInfo establecido en la referencia correspondiente a la cadena que se va a analizar, se utiliza la referencia cultural asociada al subproceso actual.

El ejemplo de código siguiente no es válido y provocará una excepción. Sirve para ilustrar una forma errónea de analizar una cadena que contiene caracteres no numéricos. Primero se crea CultureInfo, que se pasa luego al método Parse para especificar que en el análisis se debe usar la referencia cultural en-US.

Imports System.Globalization

Dim MyCultureInfo As CultureInfo = new CultureInfo("en-US")
Dim MyString As String = "123,456"
Dim MyInt As Integer = Integer.Parse(MyString, MyCultureInfo)
Console.WriteLine(MyInt)
' Raises System.Format exception.
using System.Globalization;

CultureInfo MyCultureInfo = new CultureInfo("en-US");
string MyString = "123,456";
int MyInt = int.Parse(MyString, MyCultureInfo);
Console.WriteLine(MyInt); 
// Raises System.Format exception.

Cuando se aplica la enumeración NumberStyles con el indicador AllowThousands, el método Parse pasa por alto la coma que provocó la excepción en el ejemplo anterior. En el ejemplo de código siguiente se usa la misma cadena que en el anterior, pero no se provoca la excepción. De manera parecida al ejemplo anterior, se crea primero CultureInfo, que luego se pasa al método Parse para especificar que en el análisis se debe usar el separador de miles que se utiliza en la referencia cultural en-US.

Imports System.Globalization

Dim MyCultureInfo As CultureInfo = new CultureInfo("en-US")
Dim MyString As String = "123,456"
Dim MyInt As Integer = Integer.Parse(MyString, NumberStyles.AllowThousands, MyCultureInfo)
Console.WriteLine(MyInt)
' The result is "123456".
using System.Globalization;

CultureInfo MyCultureInfo = new CultureInfo("en-US");
string MyString = "123,456";
int MyInt = int.Parse(MyString, NumberStyles.AllowThousands, MyCultureInfo);
Console.WriteLine(MyInt); 
// The result is "123456".

Vea también

Referencia

NumberStyles Enumeration

Otros recursos

Analizar cadenas
Aplicar formato a tipos
Convertir tipos