Int64.TryParse Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Převede řetězcové vyjádření čísla na jeho 64bitové celé číslo se znaky. Vrácená hodnota označuje, jestli byl převod úspěšný nebo neúspěšný.
Přetížení
| Name | Description |
|---|---|
| TryParse(String, IFormatProvider, Int64) |
Pokusí se analyzovat řetězec do hodnoty. |
| TryParse(ReadOnlySpan<Char>, Int64) |
Převede reprezentaci čísla na 64bitové celé číslo se signtegerem. Vrácená hodnota označuje, jestli byl převod úspěšný nebo neúspěšný. |
| TryParse(String, Int64) |
Převede řetězcové vyjádření čísla na jeho 64bitové celé číslo se znaky. Vrácená hodnota označuje, jestli byl převod úspěšný nebo neúspěšný. |
| TryParse(ReadOnlySpan<Byte>, IFormatProvider, Int64) |
Pokusí se analyzovat rozsah znaků UTF-8 do hodnoty. |
| TryParse(ReadOnlySpan<Char>, IFormatProvider, Int64) |
Pokusí se analyzovat rozsah znaků do hodnoty. |
| TryParse(ReadOnlySpan<Byte>, NumberStyles, IFormatProvider, Int64) |
Pokusí se analyzovat rozsah znaků UTF-8 do hodnoty. |
| TryParse(ReadOnlySpan<Byte>, Int64) |
Pokusí se převést rozsah znaků UTF-8 obsahující řetězcovou reprezentaci čísla na jeho 64bitové celé číslo se znaménkem. |
| TryParse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider, Int64) |
Převede reprezentaci čísla v zadaném stylu a formátu specifickém pro jazykovou verzi na jeho 64bitový celočíselnou ekvivalent. Vrácená hodnota označuje, jestli byl převod úspěšný nebo neúspěšný. |
| TryParse(String, NumberStyles, IFormatProvider, Int64) |
Převede řetězcovou reprezentaci čísla v zadaném stylu a formátu specifickém pro jazykovou verzi na jeho 64bitový ekvivalent celého čísla. Vrácená hodnota označuje, jestli byl převod úspěšný nebo neúspěšný. |
TryParse(String, IFormatProvider, Int64)
- Zdroj:
- Int64.cs
- Zdroj:
- Int64.cs
- Zdroj:
- Int64.cs
- Zdroj:
- Int64.cs
- Zdroj:
- Int64.cs
Pokusí se analyzovat řetězec do hodnoty.
public:
static bool TryParse(System::String ^ s, IFormatProvider ^ provider, [Runtime::InteropServices::Out] long % result) = IParsable<long>::TryParse;
public static bool TryParse(string? s, IFormatProvider? provider, out long result);
static member TryParse : string * IFormatProvider * int64 -> bool
Public Shared Function TryParse (s As String, provider As IFormatProvider, ByRef result As Long) As Boolean
Parametry
- s
- String
Řetězec, který se má analyzovat.
- provider
- IFormatProvider
Objekt, který poskytuje informace o sformátování specifické pro jazykovou verzi .
- result
- Int64
Pokud tato metoda vrátí, obsahuje výsledek úspěšné analýzy s nebo nedefinovanou hodnotu při selhání.
Návraty
true pokud s byl úspěšně analyzován; jinak , false.
Platí pro
TryParse(ReadOnlySpan<Char>, Int64)
- Zdroj:
- Int64.cs
- Zdroj:
- Int64.cs
- Zdroj:
- Int64.cs
- Zdroj:
- Int64.cs
- Zdroj:
- Int64.cs
Převede reprezentaci čísla na 64bitové celé číslo se signtegerem. Vrácená hodnota označuje, jestli byl převod úspěšný nebo neúspěšný.
public:
static bool TryParse(ReadOnlySpan<char> s, [Runtime::InteropServices::Out] long % result);
public static bool TryParse(ReadOnlySpan<char> s, out long result);
static member TryParse : ReadOnlySpan<char> * int64 -> bool
Public Shared Function TryParse (s As ReadOnlySpan(Of Char), ByRef result As Long) As Boolean
Parametry
- s
- ReadOnlySpan<Char>
Rozsah obsahující znaky představující číslo, které se má převést.
- result
- Int64
Pokud tato metoda vrátí, obsahuje 64bitovou celočíselnou hodnotu odpovídající číslu obsaženému v s, pokud převod byl úspěšný, nebo nula, pokud převod selhal. Převod selže, pokud s je null parametr nebo Empty, není ve správném formátu nebo představuje číslo menší než Int64.MinValue nebo větší než Int64.MaxValue. Tento parametr je předán neinicializovaný; jakákoli hodnota, která byla původně zadána, result bude přepsána.
Návraty
true pokud s byl úspěšně převeden; jinak , false.
Platí pro
TryParse(String, Int64)
- Zdroj:
- Int64.cs
- Zdroj:
- Int64.cs
- Zdroj:
- Int64.cs
- Zdroj:
- Int64.cs
- Zdroj:
- Int64.cs
Převede řetězcové vyjádření čísla na jeho 64bitové celé číslo se znaky. Vrácená hodnota označuje, jestli byl převod úspěšný nebo neúspěšný.
public:
static bool TryParse(System::String ^ s, [Runtime::InteropServices::Out] long % result);
public static bool TryParse(string s, out long result);
public static bool TryParse(string? s, out long result);
static member TryParse : string * int64 -> bool
Public Shared Function TryParse (s As String, ByRef result As Long) As Boolean
Parametry
- s
- String
Řetězec obsahující číslo, které chcete převést.
- result
- Int64
Pokud tato metoda vrátí, obsahuje 64bitovou celočíselnou hodnotu odpovídající číslu obsaženému v s, pokud převod byl úspěšný, nebo nula, pokud převod selhal. Převod selže, pokud s je null parametr nebo Empty, není ve správném formátu nebo představuje číslo menší než Int64.MinValue nebo větší než Int64.MaxValue. Tento parametr je předán neinicializovaný; jakákoli hodnota, která byla původně zadána, result bude přepsána.
Návraty
true pokud s byl úspěšně převeden; jinak , false.
Příklady
Následující příklad volá metodu Int64.TryParse(String, Int64) s několika různými řetězcovými hodnotami.
using System;
public class StringParsing
{
public static void Main()
{
TryToParse(null);
TryToParse("160519");
TryToParse("9432.0");
TryToParse("16,667");
TryToParse(" -322 ");
TryToParse("+4302");
TryToParse("(100);");
TryToParse("01FA");
}
private static void TryToParse(string value)
{
bool success = Int64.TryParse(value, out long number);
if (success)
{
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 '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 tryToParse (value: string) =
match Int64.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 "160519"
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 '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 StringParsing
Public Sub Main()
TryToParse(Nothing)
TryToParse("160519")
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 Long
Dim result As Boolean = Int64.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 '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.
Některé řetězce, které TryParse(String, Int64) metoda nemůže převést v tomto příkladu, jsou:
"9432.0". Převod selže, protože řetězec nemůže obsahovat oddělovač desetinných míst; musí obsahovat pouze integrální číslice.
"16,667". Převod selže, protože řetězec nemůže obsahovat oddělovače skupin; musí obsahovat pouze integrální číslice.
"(100)". Převod selže, protože řetězec nemůže obsahovat jiné záporné znaménko, než které definuje aktuální jazyková NumberFormatInfo.NegativeSign verze a NumberFormatInfo.NumberNegativePattern vlastnosti.
"01FA". Převod selže, protože řetězec nemůže obsahovat šestnáctkové číslice; musí obsahovat pouze desítkové číslice.
Poznámky
Metoda TryParse je podobná Parse metodě, s výjimkou TryParse metody nevyvolá výjimku, pokud převod selže. Eliminuje nutnost použít zpracování výjimek k otestování v FormatException případě, že s je neplatný a nelze jej úspěšně analyzovat.
Parametr s obsahuje číslo formuláře:
[ws] [sign]digits[ws]
Prvky v hranatých závorkách ([ a ]) jsou volitelné. Následující tabulka popisuje jednotlivé prvky.
| Element | Popis |
|---|---|
| Ws | Volitelné prázdné znaky. |
| znaménko | Volitelné znaménko. |
| Číslic | Posloupnost číslic v rozsahu od 0 do 9 |
Parametr s se interpretuje pomocí NumberStyles.Integer stylu. Kromě desetinných číslic jsou povoleny pouze úvodní a koncové mezery společně s počátečním symbolem. Chcete-li explicitně definovat prvky stylu spolu s informacemi o formátování specifické pro jazykovou verzi, které mohou být přítomny v s, použijte metodu TryParse(String, NumberStyles, IFormatProvider, Int64) .
Parametr s je analyzován pomocí informací o formátování v objektu NumberFormatInfo inicializovaném pro aktuální systémovou jazykovou verzi. Další informace najdete na webu CurrentInfo.
Toto přetížení TryParse metody interpretuje všechny číslice v parametru s jako desítkové číslice. Chcete-li parsovat řetězcovou reprezentaci šestnáctkového čísla, zavolejte TryParse(String, NumberStyles, IFormatProvider, Int64) přetížení.
Viz také
- Parse(String)
- ToString()
- Analýza číselných řetězců v .NET
- Ukázka: Nástroj pro formátování .NET Core WinForms (C#)
- Ukázka: .NET Core WinForms Formatting Utility (Visual Basic)
Platí pro
TryParse(ReadOnlySpan<Byte>, IFormatProvider, Int64)
- Zdroj:
- Int64.cs
- Zdroj:
- Int64.cs
- Zdroj:
- Int64.cs
- Zdroj:
- Int64.cs
Pokusí se analyzovat rozsah znaků UTF-8 do hodnoty.
public:
static bool TryParse(ReadOnlySpan<System::Byte> utf8Text, IFormatProvider ^ provider, [Runtime::InteropServices::Out] long % result) = IUtf8SpanParsable<long>::TryParse;
public static bool TryParse(ReadOnlySpan<byte> utf8Text, IFormatProvider? provider, out long result);
static member TryParse : ReadOnlySpan<byte> * IFormatProvider * int64 -> bool
Public Shared Function TryParse (utf8Text As ReadOnlySpan(Of Byte), provider As IFormatProvider, ByRef result As Long) As Boolean
Parametry
- utf8Text
- ReadOnlySpan<Byte>
Rozsah znaků UTF-8 pro analýzu.
- provider
- IFormatProvider
Objekt, který poskytuje informace o utf8Textformátování specifické pro jazykovou verzi .
- result
- Int64
Při vrácení obsahuje výsledek úspěšné utf8Text analýzy nebo nedefinovanou hodnotu selhání.
Návraty
true pokud utf8Text byl úspěšně analyzován; jinak , false.
Platí pro
TryParse(ReadOnlySpan<Char>, IFormatProvider, Int64)
- Zdroj:
- Int64.cs
- Zdroj:
- Int64.cs
- Zdroj:
- Int64.cs
- Zdroj:
- Int64.cs
- Zdroj:
- Int64.cs
Pokusí se analyzovat rozsah znaků do hodnoty.
public:
static bool TryParse(ReadOnlySpan<char> s, IFormatProvider ^ provider, [Runtime::InteropServices::Out] long % result) = ISpanParsable<long>::TryParse;
public static bool TryParse(ReadOnlySpan<char> s, IFormatProvider? provider, out long result);
static member TryParse : ReadOnlySpan<char> * IFormatProvider * int64 -> bool
Public Shared Function TryParse (s As ReadOnlySpan(Of Char), provider As IFormatProvider, ByRef result As Long) As Boolean
Parametry
- s
- ReadOnlySpan<Char>
Rozsah znaků, které se mají analyzovat.
- provider
- IFormatProvider
Objekt, který poskytuje informace o sformátování specifické pro jazykovou verzi .
- result
- Int64
Pokud tato metoda vrátí, obsahuje výsledek úspěšné analýzy s, nebo nedefinovanou hodnotu při selhání.
Návraty
true pokud s byl úspěšně analyzován; jinak , false.
Platí pro
TryParse(ReadOnlySpan<Byte>, NumberStyles, IFormatProvider, Int64)
- Zdroj:
- Int64.cs
- Zdroj:
- Int64.cs
- Zdroj:
- Int64.cs
- Zdroj:
- Int64.cs
Pokusí se analyzovat rozsah znaků UTF-8 do hodnoty.
public:
static bool TryParse(ReadOnlySpan<System::Byte> utf8Text, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] long % result) = System::Numerics::INumberBase<long>::TryParse;
public static bool TryParse(ReadOnlySpan<byte> utf8Text, System.Globalization.NumberStyles style, IFormatProvider? provider, out long result);
static member TryParse : ReadOnlySpan<byte> * System.Globalization.NumberStyles * IFormatProvider * int64 -> bool
Public Shared Function TryParse (utf8Text As ReadOnlySpan(Of Byte), style As NumberStyles, provider As IFormatProvider, ByRef result As Long) As Boolean
Parametry
- utf8Text
- ReadOnlySpan<Byte>
Rozsah znaků UTF-8 pro analýzu.
- style
- NumberStyles
Bitová kombinace stylů čísel, které mohou být přítomny v utf8Text.
- provider
- IFormatProvider
Objekt, který poskytuje informace o utf8Textformátování specifické pro jazykovou verzi .
- result
- Int64
Při vrácení obsahuje výsledek úspěšné utf8Text analýzy nebo nedefinovanou hodnotu selhání.
Návraty
true pokud utf8Text byl úspěšně analyzován; jinak , false.
Platí pro
TryParse(ReadOnlySpan<Byte>, Int64)
- Zdroj:
- Int64.cs
- Zdroj:
- Int64.cs
- Zdroj:
- Int64.cs
- Zdroj:
- Int64.cs
Pokusí se převést rozsah znaků UTF-8 obsahující řetězcovou reprezentaci čísla na jeho 64bitové celé číslo se znaménkem.
public:
static bool TryParse(ReadOnlySpan<System::Byte> utf8Text, [Runtime::InteropServices::Out] long % result);
public static bool TryParse(ReadOnlySpan<byte> utf8Text, out long result);
static member TryParse : ReadOnlySpan<byte> * int64 -> bool
Public Shared Function TryParse (utf8Text As ReadOnlySpan(Of Byte), ByRef result As Long) As Boolean
Parametry
- utf8Text
- ReadOnlySpan<Byte>
Rozsah obsahující znaky UTF-8 představující číslo, které se má převést.
- result
- Int64
Pokud tato metoda vrátí, obsahuje 64bitovou celočíselnou hodnotu odpovídající číslu obsaženému v utf8Text případě úspěchu převodu nebo nula, pokud převod selhal. Tento parametr je předán neinicializovaný; jakákoli hodnota původně zadaná ve výsledku se přepíše.
Návraty
true pokud utf8Text byl úspěšně převeden; jinak , false.
Platí pro
TryParse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider, Int64)
- Zdroj:
- Int64.cs
- Zdroj:
- Int64.cs
- Zdroj:
- Int64.cs
- Zdroj:
- Int64.cs
- Zdroj:
- Int64.cs
Převede reprezentaci čísla v zadaném stylu a formátu specifickém pro jazykovou verzi na jeho 64bitový celočíselnou ekvivalent. Vrácená hodnota označuje, jestli byl převod úspěšný nebo neúspěšný.
public:
static bool TryParse(ReadOnlySpan<char> s, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] long % result) = System::Numerics::INumberBase<long>::TryParse;
public:
static bool TryParse(ReadOnlySpan<char> s, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] long % result);
public static bool TryParse(ReadOnlySpan<char> s, System.Globalization.NumberStyles style, IFormatProvider? provider, out long result);
public static bool TryParse(ReadOnlySpan<char> s, System.Globalization.NumberStyles style, IFormatProvider provider, out long result);
static member TryParse : ReadOnlySpan<char> * System.Globalization.NumberStyles * IFormatProvider * int64 -> bool
Public Shared Function TryParse (s As ReadOnlySpan(Of Char), style As NumberStyles, provider As IFormatProvider, ByRef result As Long) As Boolean
Parametry
- s
- ReadOnlySpan<Char>
Rozsah obsahující znaky představující číslo, které se má převést. Rozsah se interpretuje pomocí stylu určeného parametrem style.
- style
- NumberStyles
Bitová kombinace hodnot výčtu, která označuje prvky stylu, které mohou být přítomny v s. Typická hodnota, kterou je třeba zadat, je Integer.
- provider
- IFormatProvider
Objekt, který poskytuje informace o sformátování specifické pro jazykovou verzi .
- result
- Int64
Pokud tato metoda vrátí, obsahuje 64bitovou celočíselnou hodnotu odpovídající číslu obsaženému v s, pokud převod byl úspěšný, nebo nula, pokud převod selhal. Převod selže, pokud s je null parametr nebo Empty, není ve formátu kompatibilním stylenebo představuje číslo menší než Int64.MinValue nebo větší než Int64.MaxValue. Tento parametr je předán neinicializovaný; jakákoli hodnota, která byla původně zadána, result bude přepsána.
Návraty
true pokud s byl úspěšně převeden; jinak , false.
Platí pro
TryParse(String, NumberStyles, IFormatProvider, Int64)
- Zdroj:
- Int64.cs
- Zdroj:
- Int64.cs
- Zdroj:
- Int64.cs
- Zdroj:
- Int64.cs
- Zdroj:
- Int64.cs
Převede řetězcovou reprezentaci čísla v zadaném stylu a formátu specifickém pro jazykovou verzi na jeho 64bitový ekvivalent celého čísla. Vrácená hodnota označuje, jestli byl převod úspěšný nebo neúspěšný.
public:
static bool TryParse(System::String ^ s, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] long % result);
public:
static bool TryParse(System::String ^ s, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] long % result) = System::Numerics::INumberBase<long>::TryParse;
public static bool TryParse(string s, System.Globalization.NumberStyles style, IFormatProvider provider, out long result);
public static bool TryParse(string? s, System.Globalization.NumberStyles style, IFormatProvider? provider, out long result);
static member TryParse : string * System.Globalization.NumberStyles * IFormatProvider * int64 -> bool
Public Shared Function TryParse (s As String, style As NumberStyles, provider As IFormatProvider, ByRef result As Long) As Boolean
Parametry
- s
- String
Řetězec obsahující číslo, které chcete převést. Řetězec se interpretuje pomocí stylu určeného znakem style.
- style
- NumberStyles
Bitová kombinace hodnot výčtu, která označuje prvky stylu, které mohou být přítomny v s. Typická hodnota, kterou je třeba zadat, je Integer.
- provider
- IFormatProvider
Objekt, který poskytuje informace o sformátování specifické pro jazykovou verzi .
- result
- Int64
Pokud tato metoda vrátí, obsahuje 64bitovou celočíselnou hodnotu odpovídající číslu obsaženému v s, pokud převod byl úspěšný, nebo nula, pokud převod selhal. Převod selže, pokud s je null parametr nebo Empty, není ve formátu kompatibilním stylenebo představuje číslo menší než Int64.MinValue nebo větší než Int64.MaxValue. Tento parametr je předán neinicializovaný; jakákoli hodnota, která byla původně zadána, result bude přepsána.
Návraty
true pokud s byl úspěšně převeden; jinak , false.
Výjimky
Příklady
Následující příklad volá metodu TryParse(String, NumberStyles, IFormatProvider, Int64) s několika různými řetězci a NumberStyles hodnotami.
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 = Int64.TryParse(stringToConvert, styles,
provider, out long 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 Int64.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 Long
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 = Int64.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.
Poznámky
Metoda TryParse je podobná Parse metodě, s výjimkou TryParse metody nevyvolá výjimku, pokud převod selže. Eliminuje nutnost použít zpracování výjimek k otestování v FormatException případě, že s je neplatný a nelze ji úspěšně analyzovat.
Parametr style definuje prvky stylu (například prázdné znaky nebo kladné nebo záporné znaménko), které jsou v parametru s povolené, aby operace analýzy byla úspěšná. Musí se jednat o kombinaci bitových příznaků z výčtu NumberStyles . V závislosti na hodnotě styleparametru s může obsahovat následující prvky:
[ws] [$] [znaménko] [digits,]digits[.fractional_digits][e[sign]exponential_digits][ws]
Nebo pokud parametr style zahrnuje NumberStyles.AllowHexSpecifier:
[ws]hexdigits[ws]
Prvky v hranatých závorkách ([ a ]) jsou volitelné. Následující tabulka popisuje jednotlivé prvky.
| Element | Popis |
|---|---|
| Ws | Volitelné prázdné znaky. Prázdné znaky se můžou objevit na začátku s , pokud style příznak obsahuje NumberStyles.AllowLeadingWhite , nebo na konci příznaku s , pokud style příznak NumberStyles.AllowTrailingWhite obsahuje. |
| $ | Symbol měny specifický pro jazykovou verzi. Jeho pozice v řetězci je definována CurrencyPositivePattern vlastností NumberFormatInfo objektu vráceného GetFormat metodou parametru provider . Symbol měny se může zobrazit, s pokud style obsahuje NumberStyles.AllowCurrencySymbol příznak. |
| znaménko | Volitelné znaménko. Symbol znaménka se může zobrazits, pokud style obsahuje NumberStyles.AllowLeadingSign příznaky.NumberStyles.AllowTrailingSign |
|
Číslic Fractional_digits exponential_digits |
Posloupnost číslic od 0 do 9. Pro fractional_digits je platná pouze číslice 0. |
| , | Oddělovač tisíců specifických pro jazykovou verzi. Oddělovačtisícůch providersstyleNumberStyles.AllowThousands |
| . | Symbol desetinné čárky specifické pro jazykovou verzi. Symbol desetinné čárky zadané jazykovou provider verzí se může zobrazit v s případě, že style obsahuje NumberStyles.AllowDecimalPoint příznak. |
| e | Znak "e" nebo "E", který označuje, že hodnota je reprezentována exponenciálním zápisem. Parametr s může představovat číslo v exponenciálním zápisustyle, pokud NumberStyles.AllowExponent obsahuje příznak. |
| hexdigits | Posloupnost šestnáctkových číslic od 0 do f nebo 0 až F. |
Poznámka
Všechny ukončující nulové znaky (U+0000) jsou s ignorovány operací analýzy bez ohledu na hodnotu argumentu style .
Řetězec s desetinnými číslicemi (který odpovídá příznaku NumberStyles.None ) se vždy úspěšně parsuje. Většina zbývajících NumberStyles členů ovládacích prvků, které mohou být, ale nemusí být přítomny v tomto vstupním řetězci. Následující tabulka uvádí, jak jednotlivé NumberStyles členy ovlivňují prvky, které mohou být přítomny v s.
| Neseparované hodnoty NumberStyles | Prvky povolené v s kromě číslic |
|---|---|
| NumberStyles.None | Pouze desítkové číslice. |
| NumberStyles.AllowDecimalPoint | Desetinná čárka ( . ) a fractional_digits prvky. Nicméně , fractional_digits se musí skládat pouze z jedné nebo více 0 číslic nebo metoda vrátí false. |
| NumberStyles.AllowExponent | Parametr s může také použít exponenciální zápis. Parametr s musí představovat celé číslo v rozsahu Int64 datového typu bez nenulové desetinné komponenty. |
| NumberStyles.AllowLeadingWhite | Element ws na začátku s. |
| NumberStyles.AllowTrailingWhite | Prvek ws na konci .s |
| NumberStyles.AllowLeadingSign | Před číslicemi se může zobrazit znaménko. |
| NumberStyles.AllowTrailingSign | Za číslicemi se může zobrazit znaménko. |
| NumberStyles.AllowParentheses | Prvek znaménka ve formě závorek ohraničující číselnou hodnotu. |
| NumberStyles.AllowThousands | Oddělovač tisíců ( , ) – element. |
| NumberStyles.AllowCurrencySymbol | Prvek $ . |
| NumberStyles.Currency | Všechny prvky. Parametr s nemůže představovat šestnáctkové číslo nebo číslo v exponenciálním zápisu. |
| NumberStyles.Float | Prvek ws na začátku nebo konci znaku s, na začátku znaku sa desetinné čárky ( . ) symbol. Parametr s může také použít exponenciální zápis. |
| NumberStyles.Number | Prvky ws, znaménka, oddělovač tisíců (,) a desetinná čárka (.). |
| NumberStyles.Any | Všechny styly s výjimkou s nemohou představovat šestnáctkové číslo. |
NumberStyles.AllowHexSpecifier Pokud se příznak použije, s musí být šestnáctková hodnota bez předpony. Například "C9AF3" se úspěšně parsuje, ale "0xC9AF3" ne. Jediné ostatní příznaky, které mohou být přítomny jsou styleNumberStyles.AllowLeadingWhite a NumberStyles.AllowTrailingWhite. (Výčet NumberStyles má složený styl, NumberStyles.HexNumberkterý obsahuje oba příznaky prázdných znaků.)
Parametr provider je IFormatProvider implementace, například CultureInfo objekt nebo NumberFormatInfo objekt, jehož GetFormat metoda vrací NumberFormatInfo objekt. Objekt NumberFormatInfo poskytuje informace specifické pro jazykovou verzi formátu s. Pokud provider ano null, NumberFormatInfo použije se objekt pro aktuální jazykovou verzi.