Int32.TryParse Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Convierte la representación en forma de cadena de un número en el entero de 32 bits con signo equivalente. Un valor devuelto indica si la operación tuvo éxito.
Sobrecargas
TryParse(ReadOnlySpan<Byte>, IFormatProvider, Int32) |
Intenta analizar un intervalo de caracteres UTF-8 en un valor. |
TryParse(ReadOnlySpan<Char>, Int32) |
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 con signo de 32 bits equivalente. Un valor devuelto indica si la conversión se realizó correctamente. |
TryParse(String, Int32) |
Convierte la representación en forma de cadena de un número en el entero de 32 bits con signo equivalente. Un valor devuelto indica si la conversión se realizó correctamente. |
TryParse(ReadOnlySpan<Char>, IFormatProvider, Int32) |
Intenta analizar un intervalo de caracteres en un valor. |
TryParse(String, IFormatProvider, Int32) |
Intenta analizar una cadena en un valor. |
TryParse(ReadOnlySpan<Byte>, NumberStyles, IFormatProvider, Int32) |
Intenta analizar un intervalo de caracteres UTF-8 en un valor. |
TryParse(ReadOnlySpan<Byte>, Int32) |
Intenta convertir un intervalo de caracteres UTF-8 que contiene la representación de cadena de un número en su entero de 32 bits con signo equivalente. |
TryParse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider, Int32) |
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 con signo de 32 bits equivalente. Un valor devuelto indica si la conversión se realizó correctamente. |
TryParse(String, NumberStyles, IFormatProvider, Int32) |
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 se realizó correctamente. |
TryParse(ReadOnlySpan<Byte>, IFormatProvider, Int32)
- Source:
- Int32.cs
- Source:
- Int32.cs
Intenta analizar un intervalo de caracteres UTF-8 en un valor.
public:
static bool TryParse(ReadOnlySpan<System::Byte> utf8Text, IFormatProvider ^ provider, [Runtime::InteropServices::Out] int % result) = IUtf8SpanParsable<int>::TryParse;
public static bool TryParse (ReadOnlySpan<byte> utf8Text, IFormatProvider? provider, out int result);
static member TryParse : ReadOnlySpan<byte> * IFormatProvider * int -> bool
Public Shared Function TryParse (utf8Text As ReadOnlySpan(Of Byte), provider As IFormatProvider, ByRef result As Integer) As Boolean
Parámetros
- utf8Text
- ReadOnlySpan<Byte>
Intervalo de caracteres UTF-8 que se van a analizar.
- provider
- IFormatProvider
Un objeto que proporciona información de formato específica de la referencia cultural sobre utf8Text
.
- result
- Int32
Al devolver, contiene el resultado de analizar utf8Text
correctamente o un valor no definido en caso de error.
Devoluciones
true
es si utf8Text
se ha analizado correctamente; en caso contrario, false
es .
Se aplica a
TryParse(ReadOnlySpan<Char>, Int32)
- Source:
- Int32.cs
- Source:
- Int32.cs
- Source:
- Int32.cs
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 con signo de 32 bits equivalente. Un valor devuelto indica si la conversión se realizó correctamente.
public:
static bool TryParse(ReadOnlySpan<char> s, [Runtime::InteropServices::Out] int % result);
public static bool TryParse (ReadOnlySpan<char> s, out int result);
static member TryParse : ReadOnlySpan<char> * int -> bool
Public Shared Function TryParse (s As ReadOnlySpan(Of Char), ByRef result As Integer) As Boolean
Parámetros
- s
- ReadOnlySpan<Char>
Un intervalo que contiene los caracteres que representan el número que se va a convertir.
- result
- 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. Se produce un error en la conversión si el s
parámetro es null
o Empty, no está en un formato compatible con style
o representa un número menor que Int32.MinValue o mayor que Int32.MaxValue. Este parámetro se pasa sin inicializar; cualquier valor proporcionado originalmente en result
se sobrescribirá.
Devoluciones
true
si s
se convirtió correctamente; en caso contrario, false
.
Se aplica a
TryParse(String, Int32)
- Source:
- Int32.cs
- Source:
- Int32.cs
- Source:
- Int32.cs
Convierte la representación en forma de cadena de un número en el entero de 32 bits con signo equivalente. Un valor devuelto indica si la conversión se realizó correctamente.
public:
static bool TryParse(System::String ^ s, [Runtime::InteropServices::Out] int % result);
public static bool TryParse (string s, out int result);
public static bool TryParse (string? s, out int result);
static member TryParse : string * int -> bool
Public Shared Function TryParse (s As String, ByRef result As Integer) As Boolean
Parámetros
- s
- String
Cadena que contiene un número que se va a convertir.
- result
- 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. Se produce un error en la conversión si el s
parámetro es null
o Empty, no tiene el formato correcto o representa un número menor que Int32.MinValue o mayor que Int32.MaxValue. Este parámetro se pasa sin inicializar; cualquier valor proporcionado originalmente en result
se sobrescribirá.
Devoluciones
true
si s
se convirtió correctamente; en caso contrario, false
.
Ejemplos
En el ejemplo siguiente se llama al Int32.TryParse(String, Int32) método con varios valores de cadena diferentes.
using namespace System;
void TryToParse(String^ value)
{
Int32 number;
bool result = Int32::TryParse(value, number);
if (result) {
Console::WriteLine("Converted '{0}' to {1}.", value, number);
}
else {
if (value == nullptr) value = "";
Console::WriteLine("Attempted conversion of '{0}' failed.", value);
}
}
void main()
{
TryToParse(nullptr);
TryToParse("160519");
TryToParse("9432.0");
TryToParse("16,667");
TryToParse(" -322 ");
TryToParse("+4302");
TryToParse("(100);");
TryToParse("01FA");
}
// The example displays the following output:
// Attempted conversion of '' failed.
// Converted '160519' to 160519.
// 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.
using System;
public class Example
{
public static void Main()
{
string[] values = { null, "160519", "9432.0", "16,667",
" -322 ", "+4302", "(100);", "01FA" };
foreach (var value in values)
{
int number;
bool success = int.TryParse(value, out number);
if (success)
{
Console.WriteLine($"Converted '{value}' to {number}.");
}
else
{
Console.WriteLine($"Attempted conversion of '{value ?? "<null>"}' failed.");
}
}
}
}
// The example displays the following output:
// Attempted conversion of '<null>' failed.
// Converted '160519' to 160519.
// 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 values =
[ null; "160519"; "9432.0"; "16,667"
" -322 "; "+4302"; "(100);"; "01FA" ]
for value in values do
match Int32.TryParse value with
| true, number ->
printfn $"Converted '{value}' to {number}."
| _ ->
printfn $"""Attempted conversion of '{if isNull value then "<null>" else value}' failed."""
// The example displays the following output:
// Attempted conversion of '<null>' failed.
// Converted '160519' to 160519.
// 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 Example
Public Sub Main()
Dim values() As String = { Nothing, "160519", "9432.0", "16,667",
" -322 ", "+4302", "(100);",
"01FA" }
For Each value In values
Dim number As Integer
Dim success As Boolean = Int32.TryParse(value, number)
If success Then
Console.WriteLine("Converted '{0}' to {1}.", value, number)
Else
Console.WriteLine("Attempted conversion of '{0}' failed.",
If(value ,"<null>"))
End If
Next
End Sub
End Module
' The example displays the following output to the console:
' Attempted conversion of '<null>' failed.
' Converted '160519' to 160519.
' 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 el TryParse(String, Int32) 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 NumberFormatInfo.NumberNegativePattern la referencia cultural actualNumberFormatInfo.NegativeSign.
"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 TryParse método es similar al Parse método , excepto que el TryParse método no produce una excepción si se produce un error en la conversión. Elimina la necesidad de usar el control de excepciones para probar en caso FormatException de que s
no sea válido y no se pueda analizar correctamente.
El s
parámetro contiene un número del formulario:
[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 comprendidos entre 0 y 9. |
El s
parámetro se interpreta con el NumberStyles.Integer estilo . 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 Int32.TryParse(String, NumberStyles, IFormatProvider, Int32) método .
El s
parámetro se analiza mediante la información de formato de un NumberFormatInfo objeto inicializado para la referencia cultural del sistema actual. Para obtener más información, vea CurrentInfo.
Esta sobrecarga del TryParse método interpreta todos los dígitos del s
parámetro como dígitos decimales. Para analizar la representación de cadena de un número hexadecimal, llame a la Int32.TryParse(String, NumberStyles, IFormatProvider, Int32) sobrecarga.
Consulte también
- Parse(String)
- ToString()
- Analizar cadenas numéricas en .NET
- Ejemplo: Utilidad de formato WinForms de .NET Core (C#)
- Ejemplo: Utilidad de formato WinForms de .NET Core (Visual Basic)
Se aplica a
TryParse(ReadOnlySpan<Char>, IFormatProvider, Int32)
- Source:
- Int32.cs
- Source:
- Int32.cs
- Source:
- Int32.cs
Intenta analizar un intervalo de caracteres en un valor.
public:
static bool TryParse(ReadOnlySpan<char> s, IFormatProvider ^ provider, [Runtime::InteropServices::Out] int % result) = ISpanParsable<int>::TryParse;
public static bool TryParse (ReadOnlySpan<char> s, IFormatProvider? provider, out int result);
static member TryParse : ReadOnlySpan<char> * IFormatProvider * int -> bool
Public Shared Function TryParse (s As ReadOnlySpan(Of Char), provider As IFormatProvider, ByRef result As Integer) As Boolean
Parámetros
- s
- ReadOnlySpan<Char>
Intervalo de caracteres que se van a analizar.
- provider
- IFormatProvider
Un objeto que proporciona información de formato específica de la referencia cultural sobre s
.
- result
- Int32
Cuando este método devuelve , contiene el resultado de analizar s
correctamente o un valor indefinido en caso de error.
Devoluciones
true
es si s
se ha analizado correctamente; en caso contrario, false
es .
Se aplica a
TryParse(String, IFormatProvider, Int32)
- Source:
- Int32.cs
- Source:
- Int32.cs
- Source:
- Int32.cs
Intenta analizar una cadena en un valor.
public:
static bool TryParse(System::String ^ s, IFormatProvider ^ provider, [Runtime::InteropServices::Out] int % result) = IParsable<int>::TryParse;
public static bool TryParse (string? s, IFormatProvider? provider, out int result);
static member TryParse : string * IFormatProvider * int -> bool
Public Shared Function TryParse (s As String, provider As IFormatProvider, ByRef result As Integer) As Boolean
Parámetros
- s
- String
Cadena que se va a analizar.
- provider
- IFormatProvider
Un objeto que proporciona información de formato específica de la referencia cultural sobre s
.
- result
- Int32
Cuando este método vuelve, contiene el resultado de analizar s
correctamente o un valor no definido en caso de error.
Devoluciones
true
es si s
se ha analizado correctamente; en caso contrario, false
es .
Se aplica a
TryParse(ReadOnlySpan<Byte>, NumberStyles, IFormatProvider, Int32)
- Source:
- Int32.cs
- Source:
- Int32.cs
Intenta analizar un intervalo de caracteres UTF-8 en un valor.
public:
static bool TryParse(ReadOnlySpan<System::Byte> utf8Text, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] int % result) = System::Numerics::INumberBase<int>::TryParse;
public static bool TryParse (ReadOnlySpan<byte> utf8Text, System.Globalization.NumberStyles style, IFormatProvider? provider, out int result);
static member TryParse : ReadOnlySpan<byte> * System.Globalization.NumberStyles * IFormatProvider * int -> bool
Public Shared Function TryParse (utf8Text As ReadOnlySpan(Of Byte), style As NumberStyles, provider As IFormatProvider, ByRef result As Integer) As Boolean
Parámetros
- utf8Text
- ReadOnlySpan<Byte>
Intervalo de caracteres UTF-8 que se van a analizar.
- style
- NumberStyles
Combinación bit a bit de estilos de número que pueden estar presentes en utf8Text
.
- provider
- IFormatProvider
Un objeto que proporciona información de formato específica de la referencia cultural sobre utf8Text
.
- result
- Int32
Al devolver, contiene el resultado de analizar utf8Text
correctamente o un valor no definido en caso de error.
Devoluciones
true
es si utf8Text
se ha analizado correctamente; en caso contrario, false
es .
Se aplica a
TryParse(ReadOnlySpan<Byte>, Int32)
- Source:
- Int32.cs
- Source:
- Int32.cs
Intenta convertir un intervalo de caracteres UTF-8 que contiene la representación de cadena de un número en su entero de 32 bits con signo equivalente.
public:
static bool TryParse(ReadOnlySpan<System::Byte> utf8Text, [Runtime::InteropServices::Out] int % result);
public static bool TryParse (ReadOnlySpan<byte> utf8Text, out int result);
static member TryParse : ReadOnlySpan<byte> * int -> bool
Public Shared Function TryParse (utf8Text As ReadOnlySpan(Of Byte), ByRef result As Integer) As Boolean
Parámetros
- utf8Text
- ReadOnlySpan<Byte>
Intervalo que contiene los caracteres UTF-8 que representan el número que se va a convertir.
- result
- Int32
Cuando este método devuelve , contiene el valor entero de 32 bits con signo equivalente al número contenido en utf8Text
si la conversión se realizó correctamente o cero si se produjo un error en la conversión. Este parámetro se pasa sin inicializar; se sobrescribirán todos los valores proporcionados originalmente en el resultado.
Devoluciones
true
si utf8Text
se convirtió correctamente; en caso contrario, false
.
Se aplica a
TryParse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider, Int32)
- Source:
- Int32.cs
- Source:
- Int32.cs
- Source:
- Int32.cs
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 con signo de 32 bits equivalente. Un valor devuelto indica si la conversión se realizó correctamente.
public:
static bool TryParse(ReadOnlySpan<char> s, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] int % result);
public:
static bool TryParse(ReadOnlySpan<char> s, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] int % result) = System::Numerics::INumberBase<int>::TryParse;
public static bool TryParse (ReadOnlySpan<char> s, System.Globalization.NumberStyles style, IFormatProvider? provider, out int result);
public static bool TryParse (ReadOnlySpan<char> s, System.Globalization.NumberStyles style, IFormatProvider provider, out int result);
static member TryParse : ReadOnlySpan<char> * System.Globalization.NumberStyles * IFormatProvider * int -> bool
Public Shared Function TryParse (s As ReadOnlySpan(Of Char), style As NumberStyles, provider As IFormatProvider, ByRef result As Integer) 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
- 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. Se produce un error en la conversión si el s
parámetro es null
o Empty, no está en un formato compatible con style
o representa un número menor que Int32.MinValue o mayor que Int32.MaxValue. Este parámetro se pasa sin inicializar; cualquier valor proporcionado originalmente en result
se sobrescribirá.
Devoluciones
true
si s
se convirtió correctamente; en caso contrario, false
.
Se aplica a
TryParse(String, NumberStyles, IFormatProvider, Int32)
- Source:
- Int32.cs
- Source:
- Int32.cs
- Source:
- Int32.cs
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 se realizó correctamente.
public:
static bool TryParse(System::String ^ s, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] int % result);
public:
static bool TryParse(System::String ^ s, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] int % result) = System::Numerics::INumberBase<int>::TryParse;
public static bool TryParse (string s, System.Globalization.NumberStyles style, IFormatProvider provider, out int result);
public static bool TryParse (string? s, System.Globalization.NumberStyles style, IFormatProvider? provider, out int result);
static member TryParse : string * System.Globalization.NumberStyles * IFormatProvider * int -> bool
Public Shared Function TryParse (s As String, style As NumberStyles, provider As IFormatProvider, ByRef result As Integer) 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
- 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. Se produce un error en la conversión si el s
parámetro es null
o Empty, no está en un formato compatible con style
o representa un número menor que Int32.MinValue o mayor que Int32.MaxValue. Este parámetro se pasa sin inicializar; cualquier valor proporcionado originalmente en result
se sobrescribirá.
Devoluciones
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 al Int32.TryParse(String, NumberStyles, IFormatProvider, Int32) método con una serie de valores y NumberStyles cadenas diferentes.
using namespace System;
using namespace System::Globalization;
void CallTryParse(String^ stringToConvert, NumberStyles styles)
{
Int32 number;
CultureInfo^ provider;
// If currency symbol is allowed, use en-US culture.
if (((Int32) (styles & NumberStyles::AllowCurrencySymbol)) > 0)
provider = gcnew CultureInfo("en-US");
else
provider = CultureInfo::InvariantCulture;
bool result = Int32::TryParse(stringToConvert, styles,
provider, number);
if (result)
Console::WriteLine("Converted '{0}' to {1}.", stringToConvert, number);
else
Console::WriteLine("Attempted conversion of '{0}' failed.",
Convert::ToString(stringToConvert));
}
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);
Console::ReadLine();
}
// The example displays the following output:
// 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.
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)
{
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 success = int.TryParse(stringToConvert, styles,
provider, out int number);
if (success)
Console.WriteLine($"Converted '{stringToConvert}' to {number}.");
else
Console.WriteLine($"Attempted conversion of '{stringToConvert}' failed.");
}
}
// 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.
open System
open System.Globalization
let callTryParse (stringToConvert: string) styles =
let provider =
// If currency symbol is allowed, use en-US culture.
if int (styles &&& NumberStyles.AllowCurrencySymbol) > 0 then
CultureInfo "en-US"
else
CultureInfo.InvariantCulture
match Int32.TryParse(stringToConvert, styles, provider) with
| true, number ->
printfn $"Converted '{stringToConvert}' to {number}."
| _ ->
printfn $"Attempted conversion of '{stringToConvert}' failed."
[<EntryPoint>]
let main _ =
let numericString = "106779"
let styles = NumberStyles.Integer
callTryParse numericString styles
let numericString = "-30677"
let styles = NumberStyles.None
callTryParse numericString styles
let styles = NumberStyles.AllowLeadingSign
callTryParse numericString styles
let numericString = "301677-"
callTryParse numericString styles
let styles = styles ||| NumberStyles.AllowTrailingSign
callTryParse numericString styles
let numericString = "$10634"
let styles = NumberStyles.Integer
callTryParse numericString styles
let styles = NumberStyles.Integer ||| NumberStyles.AllowCurrencySymbol
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 '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.
Imports System.Globalization
Module StringParsing
Public Sub Main()
Dim numericString As String
Dim styles As NumberStyles
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 Or NumberStyles.AllowTrailingSign
CallTryParse(numericString, styles)
numericString = "$10634"
styles = NumberStyles.Integer
CallTryParse(numericString, styles)
styles = NumberStyles.Integer Or NumberStyles.AllowCurrencySymbol
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 Integer
Dim provider As CultureInfo
' If currency symbol is allowed, use en-US culture.
If CBool(styles And NumberStyles.AllowCurrencySymbol) Then
provider = CultureInfo.CurrentCulture
Else
provider = New CultureInfo("en-US")
End If
Dim result As Boolean = Int32.TryParse(stringToConvert, styles, _
provider, 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 '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.
Comentarios
El TryParse método es similar al Parse método , excepto que el TryParse método no produce una excepción si se produce un error en la conversión. Elimina la necesidad de usar el control de excepciones para probar en FormatException caso de que s
no sea válido y no se pueda 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 el s
parámetro para que la operación de análisis se realice 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 el style
parámetro incluye 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 s si incluye la NumberStyles.AllowLeadingWhite marca o al final de s si style incluye la NumberStyles.AllowTrailingWhite marca .style |
$ | Símbolo de moneda específico de la referencia cultural. Su posición en la cadena se define mediante la CurrencyPositivePattern propiedad del NumberFormatInfo objeto devuelto por el GetFormat método del provider parámetro . El símbolo de moneda puede aparecer en s si style incluye la NumberStyles.AllowCurrencySymbol marca . |
sign | Un signo opcional. Un símbolo de signo puede aparecer en s si incluye las NumberStyles.AllowLeadingSign marcas o NumberStyles.AllowTrailingSignstyle . |
dígitos | Secuencia de dígitos de 0 a 9. |
, | Separador de miles específicos de la referencia cultural. El separador de miles de la referencia cultural especificada por provider puede aparecer en s si style incluye la NumberStyles.AllowThousands marca . |
. | Símbolo de separador decimal específico de la referencia cultural. El símbolo decimal de la referencia cultural especificada por provider puede aparecer en s si style incluye la NumberStyles.AllowDecimalPoint marca . |
fractional_digits | Una o varias apariciones del dígito 0. Los dígitos fraccionarios solo pueden aparecer en s si style incluye la NumberStyles.AllowDecimalPoint marca . |
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 style incluye la NumberStyles.AllowExponent marca . |
hexdigits | Secuencia de dígitos hexadecimales de 0 a f, o de 0 a F. |
Nota
La operación de análisis omite los caracteres NUL (U+0000) terminados, s
independientemente del valor del style
argumento.
Una cadena con dígitos decimales solo (que corresponde a la NumberStyles.None marca) siempre analiza correctamente. La mayoría de los miembros restantes NumberStyles controlan los elementos que pueden ser pero no deben estar presentes en esta cadena de entrada. En la tabla siguiente se indica cómo afectan los miembros individuales NumberStyles a los elementos que pueden estar presentes en s
.
Valores de NumberStyles no compuestos | Elementos permitidos en s además de dígitos |
---|---|
NumberStyles.None | Solo dígitos decimales. |
NumberStyles.AllowDecimalPoint | Los elementos decimales (.) y fractional_digits . Sin embargo, fractional_digits solo debe constar de uno o varios dígitos o el método devuelve false . |
NumberStyles.AllowExponent | El s parámetro también puede usar la notación exponencial. Si s representa un número en notación exponencial, debe representar un entero dentro del intervalo del tipo de Int32 datos sin un componente fraccionaria distinto de cero. |
NumberStyles.AllowLeadingWhite | Elemento ws al principio de s . |
NumberStyles.AllowTrailingWhite | Elemento ws al final de s . |
NumberStyles.AllowLeadingSign | Un signo puede aparecer antes de los dígitos. |
NumberStyles.AllowTrailingSign | Un signo puede aparecer después de los dígitos. |
NumberStyles.AllowParentheses | Elemento de signo en forma de paréntesis que incluye el valor numérico. |
NumberStyles.AllowThousands | Elemento separador de miles (,). |
NumberStyles.AllowCurrencySymbol | 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 elemento ws al principio o al final de s , firma al principio de s y el símbolo decimal (.). El s parámetro también puede usar la notación exponencial. |
NumberStyles.Number | Los elementos ws, sign, miles separador (,) y decimal point (.). |
NumberStyles.Any | Todos los estilos, excepto s no pueden representar un número hexadecimal. |
Si se usa la NumberStyles.AllowHexSpecifier marca , s
debe ser un valor hexadecimal sin prefijo. Por ejemplo, "C9AF3" analiza correctamente, pero "0xC9AF3" 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 CultureInfo objeto o un NumberFormatInfo objeto , cuyo GetFormat método devuelve un NumberFormatInfo objeto . El NumberFormatInfo objeto proporciona información específica de la referencia cultural sobre el formato de s
. Si provider
es null
, se usa el NumberFormatInfo objeto de la referencia cultural actual.
Consulte también
Se aplica a
Comentarios
https://aka.ms/ContentUserFeedback.
Próximamente: A lo largo de 2024 iremos eliminando gradualmente las Cuestiones de GitHub como mecanismo de retroalimentación para el contenido y lo sustituiremos por un nuevo sistema de retroalimentación. Para más información, consulta:Enviar y ver comentarios de