Int16.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 16-bitową liczbę całkowitą ze znakiem. Wartość zwracana wskazuje, czy konwersja zakończyła się powodzeniem, czy niepowodzeniem.
Przeciążenia
TryParse(ReadOnlySpan<Byte>, IFormatProvider, Int16) |
Próbuje przeanalizować zakres znaków UTF-8 w wartość. |
TryParse(ReadOnlySpan<Char>, Int16) |
Konwertuje reprezentację zakresu liczby w formacie specyficznym dla kultury na 16-bitową liczbę całkowitą ze znakiem. Wartość zwracana wskazuje, czy konwersja zakończyła się powodzeniem, czy niepowodzeniem. |
TryParse(String, Int16) |
Konwertuje reprezentację ciągu liczby na 16-bitową liczbę całkowitą ze znakiem. Wartość zwracana wskazuje, czy konwersja zakończyła się powodzeniem, czy niepowodzeniem. |
TryParse(ReadOnlySpan<Char>, IFormatProvider, Int16) |
Próbuje przeanalizować zakres znaków w wartości. |
TryParse(String, IFormatProvider, Int16) |
Próbuje przeanalizować ciąg w wartości. |
TryParse(ReadOnlySpan<Byte>, NumberStyles, IFormatProvider, Int16) |
Próbuje przeanalizować zakres znaków UTF-8 w wartość. |
TryParse(ReadOnlySpan<Byte>, Int16) |
Próbuje przekonwertować zakres znaków UTF-8 zawierający ciąg reprezentujący liczbę na 16-bitową liczbę całkowitą ze znakiem. |
TryParse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider, Int16) |
Konwertuje reprezentację zakresu liczby w określonym stylu i formacie specyficznym dla kultury na 16-bitową liczbę całkowitą ze znakiem. Wartość zwracana wskazuje, czy konwersja zakończyła się powodzeniem, czy niepowodzeniem. |
TryParse(String, NumberStyles, IFormatProvider, Int16) |
Konwertuje reprezentację ciągu liczby w określonym stylu i formacie specyficznym dla kultury na 16-bitową liczbę całkowitą ze znakiem. Wartość zwracana wskazuje, czy konwersja zakończyła się powodzeniem, czy niepowodzeniem. |
TryParse(ReadOnlySpan<Byte>, IFormatProvider, Int16)
- Źródło:
- Int16.cs
- Źródło:
- Int16.cs
Próbuje przeanalizować zakres znaków UTF-8 w wartość.
public:
static bool TryParse(ReadOnlySpan<System::Byte> utf8Text, IFormatProvider ^ provider, [Runtime::InteropServices::Out] short % result) = IUtf8SpanParsable<short>::TryParse;
public static bool TryParse (ReadOnlySpan<byte> utf8Text, IFormatProvider? provider, out short result);
static member TryParse : ReadOnlySpan<byte> * IFormatProvider * int16 -> bool
Public Shared Function TryParse (utf8Text As ReadOnlySpan(Of Byte), provider As IFormatProvider, ByRef result As Short) 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
- Int16
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>, Int16)
- Źródło:
- Int16.cs
- Źródło:
- Int16.cs
- Źródło:
- Int16.cs
Konwertuje reprezentację zakresu liczby w formacie specyficznym dla kultury na 16-bitową liczbę całkowitą ze znakiem. Wartość zwracana wskazuje, czy konwersja zakończyła się powodzeniem, czy niepowodzeniem.
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
Parametry
- s
- ReadOnlySpan<Char>
Zakres zawierający znaki reprezentujące liczbę do przekonwertowania.
- result
- Int16
Gdy ta metoda zwróci wartość całkowitą ze znakiem 16-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 lub reprezentuje liczbę mniejszą niż Int16.MinValue lub większą niż Int16.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, Int16)
- Źródło:
- Int16.cs
- Źródło:
- Int16.cs
- Źródło:
- Int16.cs
Konwertuje reprezentację ciągu liczby na 16-bitową liczbę całkowitą ze znakiem. Wartość zwracana wskazuje, czy konwersja zakończyła się powodzeniem, czy niepowodzeniem.
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
Parametry
- s
- String
Ciąg zawierający liczbę do przekonwertowania.
- result
- Int16
Gdy ta metoda zwróci wartość całkowitą ze znakiem 16-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ż Int16.MinValue lub większą niż Int16.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ę Int16.TryParse(String, Int16) z wieloma różnymi wartościami ciągu.
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.
Niektóre ciągi, których metoda TryParse(String, Int16) 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 Int16.TryParse(String, Int16) różni się od metody Int16.Parse(String), zwracając wartość logiczną wskazującą, czy operacja analizowania zakończyła się pomyślnie, zamiast zwracać przeanalizowaną wartość Int16. 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
powinien być ciągiem reprezentującym liczbę w formularzu:
[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 Int16.TryParse(String, NumberStyles, IFormatProvider, Int16).
Parametr s
jest analizowany przy użyciu informacji o formatowaniu 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 Int16.TryParse(String, NumberStyles, IFormatProvider, Int16).
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<Char>, IFormatProvider, Int16)
- Źródło:
- Int16.cs
- Źródło:
- Int16.cs
- Źródło:
- Int16.cs
Próbuje przeanalizować zakres znaków w wartości.
public:
static bool TryParse(ReadOnlySpan<char> s, IFormatProvider ^ provider, [Runtime::InteropServices::Out] short % result) = ISpanParsable<short>::TryParse;
public static bool TryParse (ReadOnlySpan<char> s, IFormatProvider? provider, out short result);
static member TryParse : ReadOnlySpan<char> * IFormatProvider * int16 -> bool
Public Shared Function TryParse (s As ReadOnlySpan(Of Char), provider As IFormatProvider, ByRef result As Short) 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
- Int16
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(String, IFormatProvider, Int16)
- Źródło:
- Int16.cs
- Źródło:
- Int16.cs
- Źródło:
- Int16.cs
Próbuje przeanalizować ciąg w wartości.
public:
static bool TryParse(System::String ^ s, IFormatProvider ^ provider, [Runtime::InteropServices::Out] short % result) = IParsable<short>::TryParse;
public static bool TryParse (string? s, IFormatProvider? provider, out short result);
static member TryParse : string * IFormatProvider * int16 -> bool
Public Shared Function TryParse (s As String, provider As IFormatProvider, ByRef result As Short) 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
- Int16
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<Byte>, NumberStyles, IFormatProvider, Int16)
- Źródło:
- Int16.cs
- Źródło:
- Int16.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] short % result) = System::Numerics::INumberBase<short>::TryParse;
public static bool TryParse (ReadOnlySpan<byte> utf8Text, System.Globalization.NumberStyles style, IFormatProvider? provider, out short result);
static member TryParse : ReadOnlySpan<byte> * System.Globalization.NumberStyles * IFormatProvider * int16 -> bool
Public Shared Function TryParse (utf8Text As ReadOnlySpan(Of Byte), style As NumberStyles, provider As IFormatProvider, ByRef result As Short) 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
- Int16
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>, Int16)
- Źródło:
- Int16.cs
- Źródło:
- Int16.cs
Próbuje przekonwertować zakres znaków UTF-8 zawierający ciąg reprezentujący liczbę na 16-bitową liczbę całkowitą ze znakiem.
public:
static bool TryParse(ReadOnlySpan<System::Byte> utf8Text, [Runtime::InteropServices::Out] short % result);
public static bool TryParse (ReadOnlySpan<byte> utf8Text, out short result);
static member TryParse : ReadOnlySpan<byte> * int16 -> bool
Public Shared Function TryParse (utf8Text As ReadOnlySpan(Of Byte), ByRef result As Short) As Boolean
Parametry
- utf8Text
- ReadOnlySpan<Byte>
Zakres zawierający znaki UTF-8 reprezentujące liczbę do przekonwertowania.
- result
- Int16
Gdy ta metoda zwróci wartość całkowitą ze znakiem 16-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, Int16)
- Źródło:
- Int16.cs
- Źródło:
- Int16.cs
- Źródło:
- Int16.cs
Konwertuje reprezentację zakresu liczby w określonym stylu i formacie specyficznym dla kultury na 16-bitową liczbę całkowitą ze znakiem. Wartość zwracana wskazuje, czy konwersja zakończyła się powodzeniem, czy niepowodzeniem.
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, [Runtime::InteropServices::Out] short % result) = System::Numerics::INumberBase<short>::TryParse;
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
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
- Int16
Gdy ta metoda zwróci wartość całkowitą ze znakiem 16-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ż Int16.MinValue lub większą niż Int16.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, Int16)
- Źródło:
- Int16.cs
- Źródło:
- Int16.cs
- Źródło:
- Int16.cs
Konwertuje reprezentację ciągu liczby w określonym stylu i formacie specyficznym dla kultury na 16-bitową liczbę całkowitą ze znakiem. Wartość zwracana wskazuje, czy konwersja zakończyła się powodzeniem, czy niepowodzeniem.
public:
static bool TryParse(System::String ^ s, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] short % result);
public:
static bool TryParse(System::String ^ s, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] short % result) = System::Numerics::INumberBase<short>::TryParse;
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
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
- Int16
Gdy ta metoda zwróci wartość całkowitą ze znakiem 16-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ż Int16.MinValue lub większą niż Int16.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ę Int16.TryParse(String, NumberStyles, IFormatProvider, Int16) z wieloma różnymi wartościami ciągu.
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.
Uwagi
Metoda Int16.TryParse(String, NumberStyles, IFormatProvider, Int16) różni się od metody Int16.Parse(String, NumberStyles, IFormatProvider), zwracając wartość logiczną wskazującą, czy operacja analizowania zakończyła się pomyślnie, zamiast zwracać przeanalizowaną wartość Int16. 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 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 stylu 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 NumberStyles.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. |
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 |
. i fractional_digits elementów. 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 Int16 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 | Element ,. |
NumberStyles.AllowCurrencySymbol | Element $. |
NumberStyles.Currency | Wszystkie elementy. Parametr s nie może reprezentować liczby szesnastkowej ani liczby w notacji wykładniczej. |
NumberStyles.Float | Element ws na początku lub na końcu s znak na początku s i . symbol. 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 "9AF3" analizuje się pomyślnie, ale "0x9AF3" 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.