Int32.TryParse Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
Konwertuje reprezentację ciągu liczby na równoważną liczbę ze znakiem 32-bitowym. Wartość zwracana wskazuje, czy operacja zakończyła się pomyślnie.
Przeciążenia
TryParse(String, IFormatProvider, Int32) |
Próbuje przeanalizować ciąg w wartości. |
TryParse(ReadOnlySpan<Char>, Int32) |
Konwertuje reprezentację zakresu liczby w formacie specyficznym dla kultury na odpowiednik liczby całkowitej ze znakiem 32-bitowym. Wartość zwracana wskazuje, czy konwersja zakończyła się pomyślnie. |
TryParse(String, Int32) |
Konwertuje reprezentację ciągu liczby na równoważną liczbę ze znakiem 32-bitowym. Wartość zwracana wskazuje, czy konwersja zakończyła się pomyślnie. |
TryParse(ReadOnlySpan<Byte>, IFormatProvider, Int32) |
Próbuje przeanalizować zakres znaków UTF-8 w wartość. |
TryParse(ReadOnlySpan<Char>, IFormatProvider, Int32) |
Próbuje przeanalizować zakres znaków w wartości. |
TryParse(ReadOnlySpan<Byte>, NumberStyles, IFormatProvider, Int32) |
Próbuje przeanalizować zakres znaków UTF-8 w wartość. |
TryParse(ReadOnlySpan<Byte>, Int32) |
Próbuje przekonwertować zakres znaków UTF-8 zawierający reprezentację ciągu liczby na 32-bitową liczbę całkowitą ze znakiem. |
TryParse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider, Int32) |
Konwertuje reprezentację zakresu liczby w określonym stylu i formacie specyficznym dla kultury na 32-bitową liczbę całkowitą ze znakiem. Wartość zwracana wskazuje, czy konwersja zakończyła się pomyślnie. |
TryParse(String, NumberStyles, IFormatProvider, Int32) |
Konwertuje reprezentację ciągu liczby w określonym stylu i formacie specyficznym dla kultury na 32-bitową liczbę całkowitą ze znakiem. Wartość zwracana wskazuje, czy konwersja zakończyła się pomyślnie. |
TryParse(String, IFormatProvider, Int32)
- Źródło:
- Int32.cs
- Źródło:
- Int32.cs
- Źródło:
- Int32.cs
Próbuje przeanalizować ciąg w wartości.
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
Parametry
- s
- String
Ciąg do analizy.
- provider
- IFormatProvider
Obiekt, który udostępnia informacje o formatowaniu specyficznym dla kultury na temat s
.
- result
- Int32
Gdy ta metoda zwraca, zawiera wynik pomyślnego analizowania s
lub niezdefiniowanej wartości w przypadku błędu.
Zwraca
true
, jeśli s
została pomyślnie przeanalizowana; w przeciwnym razie false
.
Dotyczy
TryParse(ReadOnlySpan<Char>, Int32)
- Źródło:
- Int32.cs
- Źródło:
- Int32.cs
- Źródło:
- Int32.cs
Konwertuje reprezentację zakresu liczby w formacie specyficznym dla kultury na odpowiednik liczby całkowitej ze znakiem 32-bitowym. Wartość zwracana wskazuje, czy konwersja zakończyła się pomyślnie.
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
Parametry
- s
- ReadOnlySpan<Char>
Zakres zawierający znaki reprezentujące liczbę do przekonwertowania.
- result
- Int32
Gdy ta metoda zwróci wartość całkowitą ze znakiem 32-bitowym, równoważną liczbie zawartej w s
, jeśli konwersja zakończyła się pomyślnie lub zero, jeśli konwersja nie powiodła się. Konwersja nie powiedzie się, jeśli parametr s
jest null
lub Empty lub reprezentuje liczbę mniejszą niż Int32.MinValue lub większą niż Int32.MaxValue. Ten parametr jest przekazywany niezainicjowany; każda wartość pierwotnie podana w result
zostanie zastąpiona.
Zwraca
true
, jeśli s
została pomyślnie przekonwertowana; w przeciwnym razie false
.
Dotyczy
TryParse(String, Int32)
- Źródło:
- Int32.cs
- Źródło:
- Int32.cs
- Źródło:
- Int32.cs
Konwertuje reprezentację ciągu liczby na równoważną liczbę ze znakiem 32-bitowym. Wartość zwracana wskazuje, czy konwersja zakończyła się pomyślnie.
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
Parametry
- s
- String
Ciąg zawierający liczbę do przekonwertowania.
- result
- Int32
Gdy ta metoda zwróci wartość całkowitą ze znakiem 32-bitowym, równoważną liczbie zawartej w s
, jeśli konwersja zakończyła się pomyślnie lub zero, jeśli konwersja nie powiodła się. Konwersja kończy się niepowodzeniem, jeśli parametr s
jest null
lub Empty, nie jest poprawnym formatem lub reprezentuje liczbę mniejszą niż Int32.MinValue lub większą niż Int32.MaxValue. Ten parametr jest przekazywany niezainicjowany; każda wartość pierwotnie podana w result
zostanie zastąpiona.
Zwraca
true
, jeśli s
została pomyślnie przekonwertowana; w przeciwnym razie false
.
Przykłady
Poniższy przykład wywołuje metodę Int32.TryParse(String, Int32) z wieloma różnymi wartościami ciągu.
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.
Niektóre ciągi, których metoda TryParse(String, Int32) nie może przekonwertować w tym przykładzie, to:
"9432.0". Konwersja kończy się niepowodzeniem, ponieważ ciąg nie może zawierać separatora dziesiętnego; musi zawierać tylko cyfry całkowite.
"16,667". Konwersja kończy się niepowodzeniem, ponieważ ciąg nie może zawierać separatorów grup; musi zawierać tylko cyfry całkowite.
"(100)". Konwersja kończy się niepowodzeniem, ponieważ ciąg nie może zawierać znaku ujemnego innego niż ten zdefiniowany przez właściwości NumberFormatInfo.NegativeSign bieżącej kultury i NumberFormatInfo.NumberNegativePattern.
"01FA". Konwersja kończy się niepowodzeniem, ponieważ ciąg nie może zawierać cyfr szesnastkowych; musi zawierać tylko cyfry dziesiętne.
Uwagi
Metoda TryParse jest podobna do metody Parse, z wyjątkiem metody TryParse nie zgłasza wyjątku, jeśli konwersja nie powiedzie się. Eliminuje to konieczność użycia obsługi wyjątków w celu przetestowania FormatException w przypadku, gdy s
jest nieprawidłowa i nie można jej pomyślnie przeanalizować.
Parametr s
zawiera liczbę formularzy:
[ws] [znak]cyfry[ws]
Elementy w nawiasach kwadratowych ([ i ]) są opcjonalne. W poniższej tabeli opisano każdy element.
Pierwiastek | Opis |
---|---|
ws | Opcjonalne białe znaki. |
podpisywania |
Opcjonalny znak. |
cyfry | Sekwencja cyfr od 0 do 9. |
Parametr s
jest interpretowany przy użyciu stylu NumberStyles.Integer. Oprócz cyfr dziesiętnych dozwolone są tylko spacje wiodące i końcowe wraz z znakiem wiodącym. Aby jawnie zdefiniować elementy stylu wraz z informacjami formatowania specyficznymi dla kultury, które mogą być obecne w s
, użyj metody Int32.TryParse(String, NumberStyles, IFormatProvider, Int32).
Parametr s
jest analizowany przy użyciu informacji formatowania w obiekcie NumberFormatInfo zainicjowanym dla bieżącej kultury systemu. Aby uzyskać więcej informacji, zobacz CurrentInfo.
To przeciążenie metody TryParse interpretuje wszystkie cyfry w parametrze s
jako cyfry dziesiętne. Aby przeanalizować reprezentację ciągu liczby szesnastkowej, wywołaj przeciążenie Int32.TryParse(String, NumberStyles, IFormatProvider, Int32).
Zobacz też
- Parse(String)
- ToString()
- analizowanie ciągów liczbowych na platformie .NET
- przykład : narzędzie formatowania winforms platformy .NET Core (C#)
- przykład : .NET Core WinForms Formatting Utility (Visual Basic)
Dotyczy
TryParse(ReadOnlySpan<Byte>, IFormatProvider, Int32)
- Źródło:
- Int32.cs
- Źródło:
- Int32.cs
Próbuje przeanalizować zakres znaków UTF-8 w wartość.
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
Parametry
- utf8Text
- ReadOnlySpan<Byte>
Zakres znaków UTF-8 do przeanalizowania.
- provider
- IFormatProvider
Obiekt, który udostępnia informacje o formatowaniu specyficznym dla kultury na temat utf8Text
.
- result
- Int32
Po powrocie zawiera wynik pomyślnego analizowania utf8Text
lub niezdefiniowanej wartości w przypadku błędu.
Zwraca
true
, jeśli utf8Text
została pomyślnie przeanalizowana; w przeciwnym razie false
.
Dotyczy
TryParse(ReadOnlySpan<Char>, IFormatProvider, Int32)
- Źródło:
- Int32.cs
- Źródło:
- Int32.cs
- Źródło:
- Int32.cs
Próbuje przeanalizować zakres znaków w wartości.
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
Parametry
- s
- ReadOnlySpan<Char>
Zakres znaków do przeanalizowania.
- provider
- IFormatProvider
Obiekt, który udostępnia informacje o formatowaniu specyficznym dla kultury na temat s
.
- result
- Int32
Gdy ta metoda zwraca wartość , zawiera wynik pomyślnego analizowania s
lub niezdefiniowanej wartości w przypadku błędu.
Zwraca
true
, jeśli s
została pomyślnie przeanalizowana; w przeciwnym razie false
.
Dotyczy
TryParse(ReadOnlySpan<Byte>, NumberStyles, IFormatProvider, Int32)
- Źródło:
- Int32.cs
- Źródło:
- Int32.cs
Próbuje przeanalizować zakres znaków UTF-8 w wartość.
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
Parametry
- utf8Text
- ReadOnlySpan<Byte>
Zakres znaków UTF-8 do przeanalizowania.
- style
- NumberStyles
Bitowa kombinacja stylów liczbowych, które mogą być obecne w utf8Text
.
- provider
- IFormatProvider
Obiekt, który udostępnia informacje o formatowaniu specyficznym dla kultury na temat utf8Text
.
- result
- Int32
Po powrocie zawiera wynik pomyślnego analizowania utf8Text
lub niezdefiniowanej wartości w przypadku błędu.
Zwraca
true
, jeśli utf8Text
została pomyślnie przeanalizowana; w przeciwnym razie false
.
Dotyczy
TryParse(ReadOnlySpan<Byte>, Int32)
- Źródło:
- Int32.cs
- Źródło:
- Int32.cs
Próbuje przekonwertować zakres znaków UTF-8 zawierający reprezentację ciągu liczby na 32-bitową liczbę całkowitą ze znakiem.
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
Parametry
- utf8Text
- ReadOnlySpan<Byte>
Zakres zawierający znaki UTF-8 reprezentujące liczbę do przekonwertowania.
- result
- Int32
Gdy ta metoda zwróci wartość całkowitą ze znakiem 32-bitowym, równoważną liczbie zawartej w utf8Text
, jeśli konwersja zakończyła się pomyślnie, lub zero, jeśli konwersja nie powiodła się. Ten parametr jest przekazywany niezainicjowany; każda wartość pierwotnie podana w wyniku zostanie zastąpiona.
Zwraca
true
, jeśli utf8Text
została pomyślnie przekonwertowana; w przeciwnym razie false
.
Dotyczy
TryParse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider, Int32)
- Źródło:
- Int32.cs
- Źródło:
- Int32.cs
- Źródło:
- Int32.cs
Konwertuje reprezentację zakresu liczby w określonym stylu i formacie specyficznym dla kultury na 32-bitową liczbę całkowitą ze znakiem. Wartość zwracana wskazuje, czy konwersja zakończyła się pomyślnie.
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
Parametry
- s
- ReadOnlySpan<Char>
Zakres zawierający znaki reprezentujące liczbę do przekonwertowania. Zakres jest interpretowany przy użyciu stylu określonego przez style
.
- style
- NumberStyles
Bitowa kombinacja wartości wyliczenia wskazująca elementy stylu, które mogą być obecne w s
. Typową wartością do określenia jest Integer.
- provider
- IFormatProvider
Obiekt, który dostarcza informacje o formatowaniu specyficznym dla kultury na temat s
.
- result
- Int32
Gdy ta metoda zwróci wartość całkowitą ze znakiem 32-bitowym, równoważną liczbie zawartej w s
, jeśli konwersja zakończyła się pomyślnie lub zero, jeśli konwersja nie powiodła się. Konwersja kończy się niepowodzeniem, jeśli parametr s
jest null
lub Empty, nie jest w formacie zgodnym z style
lub reprezentuje liczbę mniejszą niż Int32.MinValue lub większą niż Int32.MaxValue. Ten parametr jest przekazywany niezainicjowany; każda wartość pierwotnie podana w result
zostanie zastąpiona.
Zwraca
true
, jeśli s
została pomyślnie przekonwertowana; w przeciwnym razie false
.
Dotyczy
TryParse(String, NumberStyles, IFormatProvider, Int32)
- Źródło:
- Int32.cs
- Źródło:
- Int32.cs
- Źródło:
- Int32.cs
Konwertuje reprezentację ciągu liczby w określonym stylu i formacie specyficznym dla kultury na 32-bitową liczbę całkowitą ze znakiem. Wartość zwracana wskazuje, czy konwersja zakończyła się pomyślnie.
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
Parametry
- s
- String
Ciąg zawierający liczbę do przekonwertowania. Ciąg jest interpretowany przy użyciu stylu określonego przez style
.
- style
- NumberStyles
Bitowa kombinacja wartości wyliczenia wskazująca elementy stylu, które mogą być obecne w s
. Typową wartością do określenia jest Integer.
- provider
- IFormatProvider
Obiekt, który dostarcza informacje o formatowaniu specyficznym dla kultury na temat s
.
- result
- Int32
Gdy ta metoda zwróci wartość całkowitą ze znakiem 32-bitowym, równoważną liczbie zawartej w s
, jeśli konwersja zakończyła się pomyślnie lub zero, jeśli konwersja nie powiodła się. Konwersja kończy się niepowodzeniem, jeśli parametr s
jest null
lub Empty, nie jest w formacie zgodnym z style
lub reprezentuje liczbę mniejszą niż Int32.MinValue lub większą niż Int32.MaxValue. Ten parametr jest przekazywany niezainicjowany; każda wartość pierwotnie podana w result
zostanie zastąpiona.
Zwraca
true
, jeśli s
została pomyślnie przekonwertowana; w przeciwnym razie false
.
Wyjątki
style
nie jest wartością NumberStyles.
-lub-
style
nie jest kombinacją wartości AllowHexSpecifier i HexNumber.
Przykłady
Poniższy przykład wywołuje metodę Int32.TryParse(String, NumberStyles, IFormatProvider, Int32) z kilkoma różnymi ciągami i wartościami NumberStyles.
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.
Uwagi
Metoda TryParse jest podobna do metody Parse, z wyjątkiem metody TryParse nie zgłasza wyjątku, jeśli konwersja nie powiedzie się. Eliminuje to konieczność użycia obsługi wyjątków w celu przetestowania FormatException w przypadku, gdy s
jest nieprawidłowa i nie można jej przeanalizować pomyślnie.
Parametr style
definiuje elementy stylu (takie jak biały znak lub znak dodatni lub ujemny), które są dozwolone w parametrze s
, aby operacja analizy zakończyła się powodzeniem. Musi to być kombinacja flag bitowych z wyliczenia NumberStyles. W zależności od wartości style
parametr s
może zawierać następujące elementy:
[ws] [$] [podpis] [cyfry,]cyfry[.fractional_digits][e[znak]cyfry][ws]
Lub jeśli parametr style
zawiera AllowHexSpecifier:
[ws]hexdigits[ws]
Elementy w nawiasach kwadratowych ([ i ]) są opcjonalne. W poniższej tabeli opisano każdy element.
Pierwiastek | Opis |
---|---|
ws | Opcjonalne białe znaki. Białe znaki mogą pojawić się na początku s , jeśli style zawiera flagę NumberStyles.AllowLeadingWhite lub na końcu s , jeśli style zawiera flagę NumberStyles.AllowTrailingWhite. |
$ | Symbol waluty specyficznej dla kultury. Jego pozycja w ciągu jest definiowana przez właściwość CurrencyPositivePattern obiektu NumberFormatInfo zwróconego przez metodę GetFormat parametru provider . Symbol waluty może pojawić się w s , jeśli style zawiera flagę NumberStyles.AllowCurrencySymbol. |
podpisywania |
Opcjonalny znak. Symbol znaku może pojawić się w s , jeśli style zawiera flagi NumberStyles.AllowLeadingSign lub NumberStyles.AllowTrailingSign. |
cyfry | Sekwencja cyfr z zakresu od 0 do 9. |
, | Separator tysięcy specyficzny dla kultury. W s może pojawić się separator tysięcy kultury określonej przez provider , jeśli style zawiera flagę NumberStyles.AllowThousands. |
. | Symbol separatora dziesiętnego specyficznego dla kultury. Symbol punktu dziesiętnego kultury określonej przez provider może pojawić się w s , jeśli style zawiera flagę NumberStyles.AllowDecimalPoint. |
fractional_digits | Co najmniej jedno wystąpienie cyfry 0. Cyfry ułamkowe mogą być wyświetlane w s tylko wtedy, gdy style zawiera flagę NumberStyles.AllowDecimalPoint. |
e | Znak "e" lub "E", który wskazuje, że wartość jest reprezentowana w notacji wykładniczej. Parametr s może reprezentować liczbę w notacji wykładniczej, jeśli style zawiera flagę NumberStyles.AllowExponent. |
szesnastkowy | Sekwencja cyfr szesnastkowa od 0 do f lub od 0 do F. |
Nuta
Wszystkie znaki NUL (U+0000) w s
są ignorowane przez operację analizowania, niezależnie od wartości argumentu style
.
Ciąg z cyframi dziesiętnymi (który odpowiada flagi NumberStyles.None) zawsze analizuje się pomyślnie. Większość pozostałych elementów członkowskich NumberStyles, które mogą być, ale nie muszą być obecne w tym ciągu wejściowym. W poniższej tabeli przedstawiono, jak poszczególne elementy członkowskie NumberStyles wpływają na elementy, które mogą znajdować się w s
.
Nieskładne wartości NumberStyles | Elementy dozwolone w s oprócz cyfr |
---|---|
NumberStyles.None | Tylko cyfry dziesiętne. |
NumberStyles.AllowDecimalPoint | Punkt dziesiętny (.) i elementy fractional_digits. Jednak fractional_digits musi składać się tylko z co najmniej jednej cyfry lub metoda zwraca false . |
NumberStyles.AllowExponent | Parametr s może również używać notacji wykładniczej. Jeśli s reprezentuje liczbę w notacji wykładniczej, musi reprezentować liczbę całkowitą w zakresie typu danych Int32 bez składnika ułamkowego innego niż zero. |
NumberStyles.AllowLeadingWhite | Element ws na początku s . |
NumberStyles.AllowTrailingWhite | Element ws na końcu s . |
NumberStyles.AllowLeadingSign | Znak może pojawić się przed cyframi. |
NumberStyles.AllowTrailingSign | Znak może pojawić się po cyfrach. |
NumberStyles.AllowParentheses | Znak element w postaci nawiasów otaczających wartość liczbową. |
NumberStyles.AllowThousands | Separator tysięcy (element,). |
NumberStyles.AllowCurrencySymbol | Element $. |
NumberStyles.Currency | Wszystkie elementy. Parametr s nie może reprezentować liczby szesnastkowej lub liczby w notacji wykładniczej. |
NumberStyles.Float | Element ws na początku lub na końcu s znak na początku s i symbol dziesiętny (.). Parametr s może również używać notacji wykładniczej. |
NumberStyles.Number | Elementy ws, znaku, tysięcy separatorów (,) i dziesiętnego (.). |
NumberStyles.Any | Wszystkie style, z wyjątkiem s nie mogą reprezentować liczby szesnastkowej. |
Jeśli jest używana flaga NumberStyles.AllowHexSpecifier, s
musi być wartością szesnastkową bez prefiksu. Na przykład "C9AF3" analizuje się pomyślnie, ale "0xC9AF3" nie. Jedynymi innymi flagami, które mogą być obecne w style
, są NumberStyles.AllowLeadingWhite i NumberStyles.AllowTrailingWhite. (Wyliczenie NumberStyles ma styl złożony, NumberStyles.HexNumber, który zawiera obie flagi odstępu).
Parametr provider
jest implementacją IFormatProvider, taką jak obiekt CultureInfo lub obiekt NumberFormatInfo, którego metoda GetFormat zwraca obiekt NumberFormatInfo. Obiekt NumberFormatInfo zawiera informacje specyficzne dla kultury dotyczące formatu s
. Jeśli provider
jest null
, używany jest obiekt NumberFormatInfo dla bieżącej kultury.