Int16.TryParse Método

Definición

Convierte la representación en forma de cadena de un número en el entero de 16 bits con signo equivalente. Un valor devuelto indica si la conversión se realizó correctamente o si se produjeron errores.

Sobrecargas

TryParse(String, Int16)

Convierte la representación en forma de cadena de un número en el entero de 16 bits con signo equivalente. Un valor devuelto indica si la conversión se realizó correctamente o si se produjeron errores.

TryParse(ReadOnlySpan<Char>, Int16)

Convierte la representación de intervalo de un número con el estilo y el formato específicos de la referencia cultural que se hayan especificado en el entero de 16 bits con signo equivalente. Un valor devuelto indica si la conversión se realizó correctamente o si se produjeron errores.

TryParse(String, NumberStyles, IFormatProvider, Int16)

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 16 bits con signo equivalente. Un valor devuelto indica si la conversión se realizó correctamente o si se produjeron errores.

TryParse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider, Int16)

Convierte la representación de intervalo de un número con el estilo y el formato específicos de la referencia cultural que se hayan especificado en el entero de 16 bits con signo equivalente. Un valor devuelto indica si la conversión se realizó correctamente o si se produjeron errores.

TryParse(String, Int16)

Convierte la representación en forma de cadena de un número en el entero de 16 bits con signo equivalente. Un valor devuelto indica si la conversión se realizó correctamente o si se produjeron errores.

public:
 static bool TryParse(System::String ^ s, [Runtime::InteropServices::Out] short % result);
public static bool TryParse (string s, out short result);
public static bool TryParse (string? s, out short result);
static member TryParse : string * int16 -> bool
Public Shared Function TryParse (s As String, ByRef result As Short) As Boolean

Parámetros

s
String

Cadena que contiene un número que se va a convertir.

result
Int16

El resultado que devuelve este método contiene el valor entero con signo de 16 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 s es null o Empty, no tiene el formato correcto 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á.

Devoluciones

Boolean

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

Ejemplos

En el ejemplo siguiente se llama Int16.TryParse(String, Int16) al método con una serie de valores de cadena diferentes.

using System;

public class StringParsing
{
   public static void Main()
   {
      TryToParse(null);
      TryToParse("16051");
      TryToParse("9432.0");
      TryToParse("16,667");
      TryToParse("   -322   ");
      TryToParse("+4302");
      TryToParse("(100);");
      TryToParse("01FA");
   }

   private static void TryToParse(string value)
   {
      short number;
      bool result = Int16.TryParse(value, out number);
      if (result)
      {
         Console.WriteLine("Converted '{0}' to {1}.", value, number);
      }
      else
      {
         if (value == null) value = "";
         Console.WriteLine("Attempted conversion of '{0}' failed.", value);
      }
   }
}
// The example displays the following output to the console:
//       Attempted conversion of '' failed.
//       Converted '16051' to 16051.
//       Attempted conversion of '9432.0' failed.
//       Attempted conversion of '16,667' failed.
//       Converted '   -322   ' to -322.
//       Converted '+4302' to 4302.
//       Attempted conversion of '(100)' failed.
//       Attempted conversion of '01FA' failed.
open System

let tryToParse (value: string) =
    match Int16.TryParse value with
    | true, number -> printfn "Converted '{value}' to {number}."
    | _ ->
        let value = if isNull value then "" else value
        printfn $"Attempted conversion of '{value}' failed."

tryToParse null
tryToParse "16051"
tryToParse "9432.0"
tryToParse "16,667"
tryToParse "   -322   "
tryToParse "+4302"
tryToParse "(100);"
tryToParse "01FA"

// The example displays the following output to the console:
//       Attempted conversion of '' failed.
//       Converted '16051' to 16051.
//       Attempted conversion of '9432.0' failed.
//       Attempted conversion of '16,667' failed.
//       Converted '   -322   ' to -322.
//       Converted '+4302' to 4302.
//       Attempted conversion of '(100)' failed.
//       Attempted conversion of '01FA' failed.
Module StringParsing
   Public Sub Main()
      TryToParse(Nothing)
      TryToParse("16051")
      TryToParse("9432.0")
      TryToParse("16,667")
      TryToParse("   -322   ")
      TryToParse("+4302")
      TryToParse("(100)")
      TryToParse("01FA")
      
   End Sub
   
   Private Sub TryToParse(value As String)
      Dim number As Int16
      Dim result As Boolean = Int16.TryParse(value, number)
      If result Then
         Console.WriteLine("Converted '{0}' to {1}.", value, number)
      Else
         If value Is Nothing Then value = "" 
         Console.WriteLine("Attempted conversion of '{0}' failed.", value)
      End If     
   End Sub
End Module
' The example displays the following output to the console:
'       Attempted conversion of '' failed.
'       Converted '16051' to 16051.
'       Attempted conversion of '9432.0' failed.
'       Attempted conversion of '16,667' failed.
'       Converted '   -322   ' to -322.
'       Converted '+4302' to 4302.
'       Attempted conversion of '(100)' failed.
'       Attempted conversion of '01FA' failed.

Algunas de las cadenas que TryParse(String, Int16) el método no puede convertir en este ejemplo son:

  • "9432.0". Se produce un error en la conversión porque la cadena no puede contener un separador decimal; solo debe contener dígitos enteros.

  • "16,667". Se produce un error en la conversión porque la cadena no puede contener separadores de grupo; solo debe contener dígitos enteros.

  • "(100)". Se produce un error en la conversión porque la cadena no puede contener un signo negativo distinto del definido por las propiedades y de la NumberFormatInfo.NegativeSign referencia NumberFormatInfo.NumberNegativePattern cultural actual.

  • "01FA". Se produce un error en la conversión porque la cadena no puede contener dígitos hexadecimales; solo debe contener dígitos decimales.

Comentarios

El método difiere del método devolviendo un valor booleano que indica si la operación de análisis se ha hecho correctamente en lugar de devolver Int16.TryParse(String, Int16) Int16.Parse(String) el valor Int16 analizada. Elimina la necesidad de usar el control de excepciones para probar un en el caso de que no sea válido y no se pueda FormatException s analizar correctamente.

El s parámetro debe ser la representación en forma de cadena de un número:

[ws] [sign]digits[ws]

Los elementos entre corchetes ([ y ]) son opcionales. En esta tabla se describe cada elemento.

Elemento Descripción
ws Espacio en blanco opcional.
sign Un signo opcional.
dígitos Secuencia de dígitos que van de 0 a 9.

El s parámetro se interpreta mediante el estilo NumberStyles.Integer . Además de los dígitos decimales, solo se permiten espacios iniciales y finales junto con un signo inicial. Para definir explícitamente los elementos de estilo junto con la información de formato específica de la referencia cultural que puede estar presente en s , use el método Int16.TryParse(String, NumberStyles, IFormatProvider, Int16) .

El parámetro se analiza utilizando la información de formato de un objeto que s se inicializa para la referencia cultural actual del NumberFormatInfo sistema. Para obtener más información, vea CurrentInfo.

Esta sobrecarga del método TryParse interpreta todos los dígitos del parámetro como s dígitos decimales. Para analizar la representación de cadena de un número hexadecimal, llame a la Int16.TryParse(String, NumberStyles, IFormatProvider, Int16) sobrecarga.

Consulte también

Se aplica a

TryParse(ReadOnlySpan<Char>, Int16)

Convierte la representación de intervalo de un número con el estilo y el formato específicos de la referencia cultural que se hayan especificado en el entero de 16 bits con signo equivalente. Un valor devuelto indica si la conversión se realizó correctamente o si se produjeron errores.

public:
 static bool TryParse(ReadOnlySpan<char> s, [Runtime::InteropServices::Out] short % result);
public static bool TryParse (ReadOnlySpan<char> s, out short result);
static member TryParse : ReadOnlySpan<char> * int16 -> bool
Public Shared Function TryParse (s As ReadOnlySpan(Of Char), ByRef result As Short) As Boolean

Parámetros

s
ReadOnlySpan<Char>

Un intervalo que contiene los caracteres que representan el número que se va a convertir.

result
Int16

El resultado que devuelve este método contiene el valor entero con signo de 16 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 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á.

Devoluciones

Boolean

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

Se aplica a

TryParse(String, NumberStyles, IFormatProvider, Int16)

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 16 bits con signo equivalente. Un valor devuelto indica si la conversión se realizó correctamente o si se produjeron errores.

public:
 static bool TryParse(System::String ^ s, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] short % result);
public static bool TryParse (string s, System.Globalization.NumberStyles style, IFormatProvider provider, out short result);
public static bool TryParse (string? s, System.Globalization.NumberStyles style, IFormatProvider? provider, out short result);
static member TryParse : string * System.Globalization.NumberStyles * IFormatProvider * int16 -> bool
Public Shared Function TryParse (s As String, style As NumberStyles, provider As IFormatProvider, ByRef result As Short) As Boolean

Parámetros

s
String

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

style
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
IFormatProvider

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

result
Int16

El resultado que devuelve este método contiene el valor entero con signo de 16 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 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á.

Devoluciones

Boolean

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

Excepciones

style no es un valor NumberStyles.

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

Ejemplos

En el ejemplo siguiente se llama Int16.TryParse(String, NumberStyles, IFormatProvider, Int16) al método con varios valores de cadena diferentes.

using System;
using System.Globalization;

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

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

      numericString = "-30677";
      styles = NumberStyles.None;
      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)
   {
      short number;
      bool result = Int16.TryParse(stringToConvert, styles,
                                   CultureInfo.InvariantCulture, out number);
      if (result)
         Console.WriteLine($"Converted '{stringToConvert}' to {number}.");
      else
         Console.WriteLine($"Attempted conversion of '{stringToConvert}' failed.");
   }
}
// The example displays the following output to the console:
//       Converted '10677' to 10677.
//       Attempted conversion of '-30677' failed.
//       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 -32575.
//       Attempted conversion of '0x80C1' failed.
open System
open System.Globalization

let callTryParse (stringToConvert: string) (styles: NumberStyles) =
    match Int16.TryParse(stringToConvert, styles, CultureInfo.InvariantCulture) with
    | true, number ->
        printfn $"Converted '{stringToConvert}' to {number}."
    | _ ->
        printfn $"Attempted conversion of '{stringToConvert}' failed."

[<EntryPoint>]
let main _ =
    let numericString = "10677"
    let styles = NumberStyles.Integer
    callTryParse numericString styles

    let numericString = "-30677"
    let styles = NumberStyles.None
    callTryParse numericString styles

    let numericString = "10345.00"
    let styles = NumberStyles.Integer ||| NumberStyles.AllowDecimalPoint
    callTryParse numericString styles

    let numericString = "10345.72";
    let styles = NumberStyles.Integer ||| NumberStyles.AllowDecimalPoint
    callTryParse numericString styles

    let numericString = "22,593"
    let styles = NumberStyles.Integer ||| NumberStyles.AllowThousands
    callTryParse numericString styles

    let numericString = "12E-01"
    let styles = NumberStyles.Integer ||| NumberStyles.AllowExponent
    callTryParse numericString styles

    let numericString = "12E03"
    callTryParse numericString styles

    let numericString = "80c1"
    callTryParse numericString NumberStyles.HexNumber

    let numericString = "0x80C1"
    callTryParse numericString NumberStyles.HexNumber

    0


// The example displays the following output to the console:
//       Converted '10677' to 10677.
//       Attempted conversion of '-30677' failed.
//       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 -32575.
//       Attempted conversion of '0x80C1' failed.
Imports System.Globalization

Module StringParsing
   Public Sub Main()
      Dim numericString As String
      Dim styles As NumberStyles
      
      numericString = "10677"
      styles = NumberStyles.Integer
      CallTryParse(numericString, styles)
      
      numericString = "-30677"
      styles = NumberStyles.None
      CallTryParse(numericString, styles)
      
      numericString = "10345.00"
      styles = NumberStyles.Integer Or NumberStyles.AllowDecimalPoint
      CallTryParse(numericString, styles)
      
      numericString = "10345.72"
      styles = NumberStyles.Integer Or NumberStyles.AllowDecimalPoint
      CallTryParse(numericString, styles)

      numericString = "22,593" 
      styles = NumberStyles.Integer Or NumberStyles.AllowThousands
      CallTryParse(numericString, styles)
      
      numericString = "12E-01"
      styles = NumberStyles.Integer Or NumberStyles.AllowExponent
      CallTryParse(numericString, styles) 
          
      numericString = "12E03"
      CallTryParse(numericString, styles) 
      
      numericString = "80c1"
      CallTryParse(numericString, NumberStyles.HexNumber)
      
      numericString = "0x80C1"
      CallTryParse(numericString, NumberStyles.HexNumber)
   End Sub
   
   Private Sub CallTryParse(stringToConvert As String, styles AS NumberStyles)
      Dim number As Short
      Dim result As Boolean = Int16.TryParse(stringToConvert, styles, _
                                             CultureInfo.InvariantCulture, number)
      If result Then
         Console.WriteLine("Converted '{0}' to {1}.", stringToConvert, number)
      Else
         Console.WriteLine("Attempted conversion of '{0}' failed.", _
                           Convert.ToString(stringToConvert))
      End If                                                                           
   End Sub
End Module
' The example displays the following output to the console:
'       Converted '10677' to 10677.
'       Attempted conversion of '-30677' failed.
'       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 -32575.
'       Attempted conversion of '0x80C1' failed.

Comentarios

El método difiere del método devolviendo un valor booleano que indica si la operación de análisis se ha hecho correctamente en lugar de devolver Int16.TryParse(String, NumberStyles, IFormatProvider, Int16) Int16.Parse(String, NumberStyles, IFormatProvider) el valor Int16 analizada. Elimina la necesidad de usar el control de excepciones para probar un en el caso de que no sea válido y no se pueda FormatException s analizar correctamente.

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

[ws] [$] [sign] [digits,]digits[.fractional_digits][e[sign]digits][ws]

O bien, si style el parámetro incluye NumberStyles.AllowHexSpecifier :

[ws]hexdigits[ws]

Los elementos entre corchetes ([ y ]) son opcionales. En esta tabla se describe cada elemento.

Elemento Descripción
ws Espacio en blanco opcional. El espacio en blanco puede aparecer al principio de si incluye la marca o al s final de si incluye la marca style NumberStyles.AllowLeadingWhite s style NumberStyles.AllowTrailingWhite .
$ Símbolo de moneda específico de la referencia cultural. Su posición en la cadena se define mediante la CurrencyPositivePattern propiedad del objeto devuelto por el método del parámetro NumberFormatInfo GetFormat provider . El símbolo de moneda puede aparecer en s si incluye la marca style NumberStyles.AllowCurrencySymbol .
sign Un signo opcional.
dígitos Secuencia de dígitos del 0 al 9.
, Separador de miles específico de la referencia cultural. El separador de miles de la referencia cultural especificada provider por puede aparecer en si incluye la marca s style NumberStyles.AllowThousands .
. Símbolo de separador decimal específico de la referencia cultural. El símbolo de punto decimal de la referencia cultural especificada por provider puede aparecer en si incluye la marca s style NumberStyles.AllowDecimalPoint .
fractional_digits Una o varias apariciones del dígito 0. Los dígitos fraccionarios solo s pueden aparecer en si incluye la marca style NumberStyles.AllowDecimalPoint .
e Carácter 'e' o 'E', 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 incluye la marca style NumberStyles.AllowExponent .
hexdigits Secuencia de dígitos hexadecimales de 0 a f o de 0 a F.

Nota

La operación de análisis omite cualquier carácter NUL final (U+0000) de , independientemente del valor s del style argumento.

Una cadena solo con dígitos decimales (que corresponde a la NumberStyles.None marca) siempre analiza correctamente. La mayoría de los miembros restantes controlan los elementos que pueden estar presentes en esta cadena de entrada, pero que no NumberStyles son necesarios. En la tabla siguiente se indica cómo afectan NumberStyles los miembros individuales a los elementos que pueden estar presentes en s .

Valores numberStyles no compuestos Elementos permitidos en s además de dígitos
NumberStyles.None Solo dígitos decimales.
NumberStyles.AllowDecimalPoint El elemento de lenguaje . y fractional_digits elementos. Sin embargo, fractional_digits debe constar de solo uno o más dígitos o el método devuelve false .
NumberStyles.AllowExponent El s parámetro también puede usar la notación exponencial. Si representa un número en notación exponencial, debe representar un entero dentro del intervalo del tipo de datos sin un componente fraccional s Int16 distinto de cero.
NumberStyles.AllowLeadingWhite Elemento ws al principio de .
NumberStyles.AllowTrailingWhite Elemento ws al final de .
NumberStyles.AllowLeadingSign Un signo puede aparecer antes de los dígitos.
NumberStyles.AllowTrailingSign Puede aparecer un signo después de los dígitos.
NumberStyles.AllowParentheses Elemento sign en forma de paréntesis que incluye el valor numérico.
NumberStyles.AllowThousands Elemento , .
NumberStyles.AllowCurrencySymbol Elemento $ .
NumberStyles.Currency Todos los elementos. El parámetro s no puede representar un número hexadecimal o un número en notación exponencial.
NumberStyles.Float Elemento ws al principio o al final de s , signo al principio de s y . Símbolo. El s parámetro también puede usar la notación exponencial.
NumberStyles.Number Los elementos ws, sign, thousands separator (,) y decimal (.).
NumberStyles.Any Todos los estilos, excepto s no pueden representar un número hexadecimal.

Si se NumberStyles.AllowHexSpecifier usa la marca , debe ser un valor hexadecimal sin s prefijo. Por ejemplo, "9AF3" analiza correctamente, pero "0x9AF3" no. Las únicas marcas que pueden estar presentes en style son NumberStyles.AllowLeadingWhite y NumberStyles.AllowTrailingWhite . (La NumberStyles enumeración tiene un estilo compuesto, NumberStyles.HexNumber , que incluye ambas marcas de espacio en blanco).

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

Consulte también

Se aplica a

TryParse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider, Int16)

Convierte la representación de intervalo de un número con el estilo y el formato específicos de la referencia cultural que se hayan especificado en el entero de 16 bits con signo equivalente. Un valor devuelto indica si la conversión se realizó correctamente o si se produjeron errores.

public:
 static bool TryParse(ReadOnlySpan<char> s, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] short % result);
public static bool TryParse (ReadOnlySpan<char> s, System.Globalization.NumberStyles style, IFormatProvider? provider, out short result);
public static bool TryParse (ReadOnlySpan<char> s, System.Globalization.NumberStyles style, IFormatProvider provider, out short result);
static member TryParse : ReadOnlySpan<char> * System.Globalization.NumberStyles * IFormatProvider * int16 -> bool
Public Shared Function TryParse (s As ReadOnlySpan(Of Char), style As NumberStyles, provider As IFormatProvider, ByRef result As Short) As Boolean

Parámetros

s
ReadOnlySpan<Char>

Un intervalo que contiene los caracteres que representan el número que se va a convertir. El intervalo se interpreta mediante el estilo especificado por style.

style
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
IFormatProvider

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

result
Int16

El resultado que devuelve este método contiene el valor entero con signo de 16 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 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á.

Devoluciones

Boolean

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

Se aplica a