Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Método Int32.TryParse (String, NumberStyles, IFormatProvider, Int32)

 

Publicado: octubre de 2016

Convierte la representación en forma de cadena de un número con el estilo y el formato específico de la referencia cultural que se hayan especificado en el entero de 32 bits con signo equivalente. Un valor devuelto indica si la conversión tuvo éxito.

Espacio de nombres:   System
Ensamblado:  mscorlib (en mscorlib.dll)

public static bool TryParse(
	string s,
	NumberStyles style,
	IFormatProvider provider,
	out int result
)

Parámetros

s
Type: System.String

Cadena que contiene un número que se va a convertir. La cadena se interpreta usando el estilo especificado por style.

style
Type: System.Globalization.NumberStyles

Combinación bit a bit de los valores de enumeración que indica los elementos de estilo que pueden estar presentes en s. Un valor que se especifica de forma habitual es Integer.

provider
Type: System.IFormatProvider

Objeto que proporciona información de formato específica de la referencia cultural acerca de s.

result
Type: System.Int32

El resultado que devuelve este método contiene el valor entero con signo de 32 bits equivalente al número contenido en s si la conversión se realizó correctamente, o bien, cero si no se realizó correctamente. La conversión no se realiza correctamente si el parámetro es snull o String.Empty, no tiene un formato compatible con style o representa un número menor que MinValue o mayor que MaxValue. Este parámetro se pasa sin inicializar; cualquier valor proporcionado originalmente en result se sobrescribirá.

Valor devuelto

Type: System.Boolean

true si s se convirtió correctamente; en caso contrario, false.

Exception Condition
ArgumentException

style no es un valor NumberStyles.

-o-

style no es una combinación de valores AllowHexSpecifier y HexNumber.

El TryParse método es similar a la Parse método, excepto el TryParse método no produce una excepción si se produce un error en la conversión. Elimina la necesidad de utilizar el control de excepciones para probar una FormatException en caso de que s no es válido y no se puede analizar correctamente.

El style parámetro define los elementos de estilo (como espacios en blanco o un signo positivo o negativo) que se permiten en la s parámetro para la operación de análisis se realice correctamente. Debe ser una combinación de marcadores de bits de la NumberStyles enumeración. Dependiendo del valor de style, el s parámetro puede incluir los siguientes elementos:

[ws] [$] [inicio de sesión] [dígitos,] dígitos [fraccionarios] [e [signo] dígitos] [eb]

O bien, si la style parámetro incluye AllowHexSpecifier:

[eb] dígitos hexadecimales [eb]

Elementos de corchetes ([y]) son opcionales. En la tabla siguiente describe cada elemento.

Elemento

Descripción

eb

Espacio en blanco opcional. Espacio en blanco puede aparecer al principio de s si style incluye la NumberStyles.AllowLeadingWhite marca, o al final de s si style incluye la NumberStyles.AllowTrailingWhite marca.

$

Un símbolo de moneda específico de la referencia cultural. Su posición en la cadena viene definida por el CurrencyPositivePattern propiedad de la NumberFormatInfo objeto devuelto por la GetFormat método de la provider parámetro. El símbolo de moneda puede aparecer en s si style incluye la NumberStyles.AllowCurrencySymbol marca.

signo

Un signo opcional. Puede aparecer un símbolo de inicio de sesión en s si style incluye la NumberStyles.AllowLeadingSign o NumberStyles.AllowTrailingSign marcas.

dígitos

Una secuencia de dígitos comprendido entre 0 y 9.

,

Específicas de referencias culturales miles separador. Los miles separador de la referencia cultural especificada por provider pueden aparecer en s si style incluye la NumberStyles.AllowThousands marca.

.

Un símbolo de separador decimal de referencias culturales específicas. El símbolo de separador decimal de la referencia cultural especificada por provider pueden aparecer en s si style incluye la NumberStyles.AllowDecimalPoint marca.

dígitos fraccionarios

Una o más apariciones del dígito 0. Pueden aparecer dígitos fraccionarios en s solo si style incluye la NumberStyles.AllowDecimalPoint marca.

h

El 'e' o el carácter 'E', lo que indica que el valor se representa en notación exponencial. El s parámetro puede representar un número en notación exponencial si style incluye la NumberStyles.AllowExponent marca.

dígitos hexadecimales

Una secuencia de dígitos hexadecimales de 0 a f o 0 hasta la f el.

Una cadena únicamente por dígitos decimales (que corresponde a la NumberStyles.None marca) siempre se analiza correctamente. La mayoría de las restantes NumberStyles miembros controlan los elementos que pueden ser pero no tienen que estar presentes en esta cadena de entrada. La tabla siguiente se indica cómo individuales NumberStyles miembros afectan a los elementos que pueden estar presentes en s.

Valores NumberStyles no compuestos

Elementos permitidos en s además de dígitos

NumberStyles.None

Dígitos decimales.

NumberStyles.AllowDecimalPoint

El separador decimal (.) y dígitos fraccionarios elementos. Sin embargo, dígitos fraccionarios debe constar de uno o más dígitos 0 o el método devuelve false.

NumberStyles.AllowExponent

El s parámetro también puede utilizar la notación exponencial. Si s representa un número en notación exponencial, debe representar un número entero comprendido entre el Int32 tipo de datos sin un componente fraccionario distinto de cero.

NumberStyles.AllowLeadingWhite

El ws elemento situado al principio de s.

NumberStyles.AllowTrailingWhite

El ws elemento situado al final de s.

NumberStyles.AllowLeadingSign

Puede aparecer un signo antes dígitos.

NumberStyles.AllowTrailingSign

Puede aparecer un signo después dígitos.

NumberStyles.AllowParentheses

El inicio de sesión elemento en forma de paréntesis delimitando el valor numérico.

NumberStyles.AllowThousands

Los miles separador (,) elemento.

NumberStyles.AllowCurrencySymbol

El $ elemento.

NumberStyles.Currency

Todos los elementos. El s parámetro no puede representar un número hexadecimal o un número en notación exponencial.

NumberStyles.Float

El ws elemento al principio o al final de s, inicio de sesión al principio de sy el separador decimal (.) símbolo. El s parámetro también puede utilizar la notación exponencial.

NumberStyles.Number

El ws, inicio de sesión, miles separador (,) y el separador decimal (.) elementos.

NumberStyles.Any

Todos los estilos excepto s no puede representar un número hexadecimal.

Si el NumberStyles.AllowHexSpecifier se utiliza la marca, s debe ser un valor hexadecimal sin prefijo. Por ejemplo, "C9AF3" se analiza correctamente, pero no "0xC9AF3". Los únicos otros marcadores que pueden estar presentes en style son NumberStyles.AllowLeadingWhite y NumberStyles.AllowTrailingWhite. (El NumberStyles enumeración tiene un estilo compuesto, NumberStyles.HexNumber, que incluye ambos marcadores de espacio en blanco.)

El provider parámetro es un IFormatProvider implementación, como un CultureInfo objeto o un NumberFormatInfo objeto cuya GetFormat método devuelve un NumberFormatInfo objeto. El NumberFormatInfo objeto proporciona información específica de la referencia cultural acerca del formato de s. Si provider es null, el NumberFormatInfo se usa la referencia cultural actual del objeto.

El ejemplo siguiente se llama el Int32.TryParse(String, NumberStyles, IFormatProvider, Int32) método con un número de otra cadena y NumberStyles valores.

using System;
using System.Globalization;

public class StringParsing
{
   public static void Main()
   {
      string numericString;
      NumberStyles styles;

      numericString = "106779";
      styles = NumberStyles.Integer;
      CallTryParse(numericString, styles);

      numericString = "-30677";
      styles = NumberStyles.None;
      CallTryParse(numericString, styles);

      styles = NumberStyles.AllowLeadingSign;
      CallTryParse(numericString, styles);

      numericString = "301677-";
      CallTryParse(numericString, styles);

      styles = styles | NumberStyles.AllowTrailingSign;
      CallTryParse(numericString, styles);

      numericString = "$10634";
      styles = NumberStyles.Integer;
      CallTryParse(numericString, styles);

      styles = NumberStyles.Integer | NumberStyles.AllowCurrencySymbol;
      CallTryParse(numericString, styles);

      numericString = "10345.00";
      styles = NumberStyles.Integer | NumberStyles.AllowDecimalPoint;
      CallTryParse(numericString, styles);

      numericString = "10345.72";
      styles = NumberStyles.Integer | NumberStyles.AllowDecimalPoint;
      CallTryParse(numericString, styles);

      numericString = "22,593"; 
      styles = NumberStyles.Integer | NumberStyles.AllowThousands;
      CallTryParse(numericString, styles);

      numericString = "12E-01";
      styles = NumberStyles.Integer | NumberStyles.AllowExponent;
      CallTryParse(numericString, styles); 

      numericString = "12E03";
      CallTryParse(numericString, styles); 

      numericString = "80c1";
      CallTryParse(numericString, NumberStyles.HexNumber);

      numericString = "0x80C1";
      CallTryParse(numericString, NumberStyles.HexNumber);      
   }

   private static void CallTryParse(string stringToConvert, NumberStyles styles)
   {
      int number;
      CultureInfo provider;

      // If currency symbol is allowed, use en-US culture.
      if ((styles & NumberStyles.AllowCurrencySymbol) > 0)
         provider = new CultureInfo("en-US");
      else
         provider = CultureInfo.InvariantCulture;

      bool result = Int32.TryParse(stringToConvert, styles, 
                                   provider, out number);
      if (result)
         Console.WriteLine("Converted '{0}' to {1}.", stringToConvert, number);
      else
         Console.WriteLine("Attempted conversion of '{0}' failed.", 
                           Convert.ToString(stringToConvert));
   }
}
// The example displays the following output to the console:
//       Converted '106779' to 106779.
//       Attempted conversion of '-30677' failed.
//       Converted '-30677' to -30677.
//       Attempted conversion of '301677-' failed.
//       Converted '301677-' to -301677.
//       Attempted conversion of '$10634' failed.
//       Converted '$10634' to 10634.
//       Converted '10345.00' to 10345.
//       Attempted conversion of '10345.72' failed.
//       Converted '22,593' to 22593.
//       Attempted conversion of '12E-01' failed.
//       Converted '12E03' to 12000.
//       Converted '80c1' to 32961.
//       Attempted conversion of '0x80C1' failed.

Plataforma universal de Windows
Disponible desde 8
.NET Framework
Disponible desde 2.0
Biblioteca de clases portable
Se admite en: plataformas portátiles de .NET
Silverlight
Disponible desde 2.0
Windows Phone Silverlight
Disponible desde 7.0
Windows Phone
Disponible desde 8.1
Volver al principio
Mostrar: