BigInteger.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.
Próbuje przekonwertować reprezentację ciągu liczby na BigInteger równoważną i zwraca wartość wskazującą, czy konwersja zakończyła się pomyślnie.
Przeciążenia
TryParse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider, BigInteger) |
Próbuje przekonwertować reprezentację ciągu liczby na jej BigInteger odpowiednik i zwraca wartość wskazującą, czy konwersja powiodła się. |
TryParse(String, IFormatProvider, BigInteger) |
Próbuje przeanalizować ciąg w wartości. |
TryParse(ReadOnlySpan<Char>, IFormatProvider, BigInteger) |
Próbuje przeanalizować zakres znaków w wartości. |
TryParse(String, BigInteger) |
Próbuje przekonwertować reprezentację ciągu liczby na jej BigInteger odpowiednik i zwraca wartość wskazującą, czy konwersja powiodła się. |
TryParse(ReadOnlySpan<Char>, BigInteger) |
Próbuje przekonwertować reprezentację liczby zawartej w określonym zakresie znaków tylko do odczytu na jej BigInteger odpowiednik i zwraca wartość wskazującą, czy konwersja powiodła się. |
TryParse(String, NumberStyles, IFormatProvider, BigInteger) |
Próbuje przekonwertować reprezentację ciągu liczby w określonym stylu i formacie specyficznym dla kultury na jego BigInteger odpowiednik i zwraca wartość wskazującą, czy konwersja powiodła się. |
TryParse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider, BigInteger)
- Źródło:
- BigInteger.cs
- Źródło:
- BigInteger.cs
- Źródło:
- BigInteger.cs
Próbuje przekonwertować reprezentację ciągu liczby na jej BigInteger odpowiednik i zwraca wartość wskazującą, czy konwersja powiodła się.
public:
static bool TryParse(ReadOnlySpan<char> value, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] System::Numerics::BigInteger % result);
public:
static bool TryParse(ReadOnlySpan<char> value, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] System::Numerics::BigInteger % result) = System::Numerics::INumberBase<System::Numerics::BigInteger>::TryParse;
public static bool TryParse (ReadOnlySpan<char> value, System.Globalization.NumberStyles style, IFormatProvider? provider, out System.Numerics.BigInteger result);
public static bool TryParse (ReadOnlySpan<char> value, System.Globalization.NumberStyles style, IFormatProvider provider, out System.Numerics.BigInteger result);
static member TryParse : ReadOnlySpan<char> * System.Globalization.NumberStyles * IFormatProvider * BigInteger -> bool
Public Shared Function TryParse (value As ReadOnlySpan(Of Char), style As NumberStyles, provider As IFormatProvider, ByRef result As BigInteger) As Boolean
Parametry
- value
- ReadOnlySpan<Char>
Reprezentacja liczby jako zakresu znaków tylko do odczytu.
- style
- NumberStyles
Bitowa kombinacja wartości wyliczenia wskazująca elementy stylu, które mogą być obecne w obiekcie value
. Typową wartością do określenia jest Integer.
- provider
- IFormatProvider
Obiekt, który dostarcza informacje o formatowaniu specyficznym dla kultury.value
- result
- BigInteger
Gdy ta metoda zwraca wartość , zawiera BigInteger odpowiednik liczby zawartej w value
elemencie lub Zero , jeśli konwersja nie powiodła się. Konwersja kończy się niepowodzeniem, value
jeśli parametr jest pustym zakresem znaków lub nie jest w formacie zgodnym z style
. Ten parametr jest przekazywany jako niezainicjowany.
Zwraca
true
jeśli value
pomyślnie przekonwertowano; w przeciwnym razie . false
Wyjątki
style
nie jest wartością NumberStyles .
-lub-
style
zawiera flagę AllowHexSpecifier lub HexNumber wraz z inną wartością.
Uwagi
To przeciążenie jest podobne do Parse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider) metody, z tą różnicą, że nie zgłasza wyjątku, jeśli konwersja nie powiedzie się. Ta metoda eliminuje konieczność użycia obsługi wyjątków w celu przetestowania elementu FormatException , jeśli value
jest nieprawidłowy i nie można go pomyślnie przeanalizować.
Parametr style
definiuje elementy stylu (takie jak biały znak lub znak dodatni lub ujemny), które są dozwolone w parametrze value
, aby operacja analizy zakończyła się pomyślnie. Musi to być kombinacja flag bitowych z NumberStyles wyliczenia. W zależności od wartości style
parametr może value
zawierać następujące elementy:
[ws] [$][znak][cyfry,]cyfry[.fractional_digits][E[znak]exponential_digits][ws]
style
Jeśli parametr zawiera AllowHexSpecifierparametr , value
parametr może zawierać następujące elementy:
[ws] hexdigits[ws]
Elementy w nawiasach kwadratowych ([ i ]) są opcjonalne. W tabeli poniżej opisano każdy element.
Element | Opis |
---|---|
Ws | Opcjonalny odstęp. Białe znaki mogą pojawić się na początku value , jeśli style zawiera flagę NumberStyles.AllowLeadingWhite lub na końcu value , jeśli style zawiera flagę NumberStyles.AllowTrailingWhite . |
$ | Symbol waluty specyficzny dla kultury. Jego pozycja w value pliku jest definiowana przez CurrencyPositivePattern właściwość NumberFormatInfo obiektu zwróconego przez GetFormat metodę parametru provider . Symbol waluty może pojawić się, value jeśli style zawiera flagę NumberStyles.AllowCurrencySymbol . |
sign | Opcjonalny znak. Znak może pojawić się na początku value , jeśli style zawiera flagę NumberStyles.AllowLeadingSign i może pojawić się na końcu value , jeśli style zawiera flagę NumberStyles.AllowTrailingSign . Nawiasy mogą służyć value do wskazywania wartości ujemnej, jeśli style zawiera flagę NumberStyles.AllowParentheses . |
Cyfr | Sekwencja cyfr od 0 do 9. |
, | Separator grupy specyficzny dla kultury. Separator grupy kultury określonej przez provider może pojawić się w pliku , value jeśli style zawiera flagę NumberStyles.AllowThousands . |
. | Symbol dziesiętny specyficzny dla kultury. Symbol punktu dziesiętnego kultury określonej przez provider program może pojawić się w value pliku , jeśli style zawiera flagę NumberStyles.AllowDecimalPoint . |
fractional_digits | Jedno lub więcej wystąpień cyfry 0. Cyfry ułamkowe mogą być wyświetlane tylko wtedy value , gdy style zawiera flagę NumberStyles.AllowDecimalPoint . |
E | Znak „e” lub „E”, który wskazuje, że wartość jest reprezentowana w zapisie wykładniczym (naukowym). Parametr value może reprezentować liczbę w notacji wykładniczej, jeśli style zawiera flagę NumberStyles.AllowExponent . |
exponential_digits | Sekwencja cyfr od 0 do 9. Parametr value może reprezentować liczbę w notacji wykładniczej, jeśli style zawiera flagę NumberStyles.AllowExponent . |
hexdigits | Sekwencja cyfr szesnastkowych od 0 do f lub od 0 do F. |
Uwaga
Wszystkie znaki NUL zakończenia (U+0000) w s
obiekcie są ignorowane przez operację analizowania, niezależnie od wartości argumentu style
.
Wartości nieskładne NumberStyles |
Dodatkowe (poza cyframi) elementy dozwolone w wartości |
---|---|
None | Tylko cyfry dziesiętne. |
AllowDecimalPoint | Liczba dziesiętna (.) i fractional_digits elementów. Jednak fractional_digits musi składać się tylko z co najmniej jednej cyfry lub metoda zwraca wartość false . |
AllowExponent | Znak "e" lub "E", który wskazuje notację wykładniczą, wraz z exponential_digits. Jeśli value reprezentuje liczbę w notacji wykładniczej, nie może mieć składnika ułamkowego niezerowego. |
AllowLeadingWhite | Element ws na początku .value |
AllowTrailingWhite | Element ws na końcu elementu value . |
AllowLeadingSign | Element znaku przed cyframi. |
AllowTrailingSign | Element znaku po cyfrach. |
AllowParentheses | Element znaku w postaci nawiasów otaczających wartość liczbową. |
AllowThousands | Element separatora grup (,). |
AllowCurrencySymbol | Element waluty ($). |
Currency | Wszystkie elementy.
value Nie można jednak reprezentować liczby szesnastkowej ani liczby w notacji wykładniczej. |
Float | Element ws na początku lub na końcu value znaku na początku , i symbol separatora dziesiętnego value (.). Parametr value może również używać notacji wykładniczej. |
Number | Elementy ws, sign, group separator (,) i decimal point (.). |
Any | Wszystkie elementy.
value Nie można jednak reprezentować liczby szesnastkowej. |
Jeśli flaga NumberStyles.AllowHexSpecifier jest używana, value
musi być wartością szesnastkową. Jedynymi innymi flagami, które mogą być obecne w systemie style
, są i NumberStyles.AllowLeadingWhiteNumberStyles.AllowTrailingWhite. (Wyliczenie NumberStyles ma styl złożony, HexNumber, który zawiera obie flagi odstępu).
Parametr provider
jest implementacją IFormatProvider . Metoda GetFormat zwraca NumberFormatInfo obiekt, który dostarcza informacji specyficznych dla kultury o formacie value
. Parametr provider
może być jednym z następujących:
CultureInfo Obiekt reprezentujący kulturę dostarczającą informacje o formatowaniu. Metoda GetFormat zwraca NumberFormatInfo obiekt, który dostarcza informacje o formatowaniu liczbowym dla tej kultury.
NumberFormatInfo Obiekt, który udostępnia informacje o formatowaniu liczbowym. (Jego implementacja GetFormat samego zwraca się).
Obiekt niestandardowy, który implementuje IFormatProviderelement . Metoda GetFormat tworzy wystąpienie i zwraca NumberFormatInfo obiekt, który dostarcza informacje o formatowaniu.
Jeśli provider
parametr ma null
wartość , NumberFormatInfo używany jest obiekt bieżącej kultury.
Zobacz też
Dotyczy
TryParse(String, IFormatProvider, BigInteger)
- Źródło:
- BigInteger.cs
- Źródło:
- BigInteger.cs
- Źródło:
- BigInteger.cs
Próbuje przeanalizować ciąg w wartości.
public:
static bool TryParse(System::String ^ s, IFormatProvider ^ provider, [Runtime::InteropServices::Out] System::Numerics::BigInteger % result) = IParsable<System::Numerics::BigInteger>::TryParse;
public static bool TryParse (string? s, IFormatProvider? provider, out System.Numerics.BigInteger result);
static member TryParse : string * IFormatProvider * BigInteger -> bool
Public Shared Function TryParse (s As String, provider As IFormatProvider, ByRef result As BigInteger) As Boolean
Parametry
- s
- String
Ciąg do analizy.
- provider
- IFormatProvider
Obiekt, który udostępnia informacje o formatowaniu specyficznym dla kultury.s
- result
- BigInteger
Gdy ta metoda zwraca wartość , zawiera wynik pomyślnej analizy 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>, IFormatProvider, BigInteger)
- Źródło:
- BigInteger.cs
- Źródło:
- BigInteger.cs
- Źródło:
- BigInteger.cs
Próbuje przeanalizować zakres znaków w wartości.
public:
static bool TryParse(ReadOnlySpan<char> s, IFormatProvider ^ provider, [Runtime::InteropServices::Out] System::Numerics::BigInteger % result) = ISpanParsable<System::Numerics::BigInteger>::TryParse;
public static bool TryParse (ReadOnlySpan<char> s, IFormatProvider? provider, out System.Numerics.BigInteger result);
static member TryParse : ReadOnlySpan<char> * IFormatProvider * BigInteger -> bool
Public Shared Function TryParse (s As ReadOnlySpan(Of Char), provider As IFormatProvider, ByRef result As BigInteger) As Boolean
Parametry
- s
- ReadOnlySpan<Char>
Zakres znaków do przeanalizowania.
- provider
- IFormatProvider
Obiekt, który udostępnia informacje o formatowaniu specyficznym dla kultury.s
- result
- BigInteger
Gdy ta metoda zwraca wartość , zawiera wynik pomyślnej analizy 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, BigInteger)
- Źródło:
- BigInteger.cs
- Źródło:
- BigInteger.cs
- Źródło:
- BigInteger.cs
Próbuje przekonwertować reprezentację ciągu liczby na jej BigInteger odpowiednik i zwraca wartość wskazującą, czy konwersja powiodła się.
public:
static bool TryParse(System::String ^ value, [Runtime::InteropServices::Out] System::Numerics::BigInteger % result);
public static bool TryParse (string value, out System.Numerics.BigInteger result);
public static bool TryParse (string? value, out System.Numerics.BigInteger result);
static member TryParse : string * BigInteger -> bool
Public Shared Function TryParse (value As String, ByRef result As BigInteger) As Boolean
Parametry
- value
- String
Reprezentacja ciągu liczby.
- result
- BigInteger
Gdy ta metoda zwraca wartość , zawiera BigInteger odpowiednik liczby zawartej w value
liczbie lub zero (0), jeśli konwersja nie powiedzie się. Konwersja nie powiedzie się, jeśli value
parametr jest null
lub nie ma poprawnego formatu. Ten parametr jest przekazywany jako niezainicjowany.
Zwraca
true
jeśli value
pomyślnie przekonwertowano; w przeciwnym razie . false
Wyjątki
value
to null
.
Przykłady
W poniższym przykładzie użyto TryParse(String, BigInteger) metody do utworzenia wystąpienia dwóch BigInteger obiektów. Jeśli konwersja powiedzie się, pomnoży każdy obiekt przez inną liczbę, a następnie wywołuje Compare metodę w celu określenia relacji między dwoma obiektami.
BigInteger number1, number2;
bool succeeded1 = BigInteger.TryParse("-12347534159895123", out number1);
bool succeeded2 = BigInteger.TryParse("987654321357159852", out number2);
if (succeeded1 && succeeded2)
{
number1 *= 3;
number2 *= 2;
switch (BigInteger.Compare(number1, number2))
{
case -1:
Console.WriteLine("{0} is greater than {1}.", number2, number1);
break;
case 0:
Console.WriteLine("{0} is equal to {1}.", number1, number2);
break;
case 1:
Console.WriteLine("{0} is greater than {1}.", number1, number2);
break;
}
}
else
{
if (! succeeded1)
Console.WriteLine("Unable to initialize the first BigInteger value.");
if (! succeeded2)
Console.WriteLine("Unable to initialize the second BigInteger value.");
}
// The example displays the following output:
// 1975308642714319704 is greater than -37042602479685369.
let mutable number1 = BigInteger.Zero
let mutable number2 = BigInteger.Zero
let succeeded1 = BigInteger.TryParse("-12347534159895123", &number1)
let succeeded2 = BigInteger.TryParse("987654321357159852", &number2)
if succeeded1 && succeeded2 then
number1 <- number1 * 3I
number2 <- number2 * 2I
match BigInteger.Compare(number1, number2) with
| -1 -> printfn $"{number2} is greater than {number2}."
| 0 -> printfn $"{number1} is equal to {number2}."
| 1
| _ -> printfn $"{number1} is greater than {number2}."
else
if not succeeded1 then
printfn "Unable to initialize the first BigInteger value."
if not succeeded2 then
printfn "Unable to initialize the second BigInteger value."
// The example displays the following output:
// 1975308642714319704 is greater than -37042602479685369.
Dim number1 As BigInteger = BigInteger.Zero
Dim number2 As BigInteger = BigInteger.Zero
Dim succeeded1 As Boolean = BigInteger.TryParse("-12347534159895123", number1)
Dim succeeded2 As Boolean = BigInteger.TryParse("987654321357159852", number2)
If succeeded1 AndAlso succeeded2
number1 *= 3
number2 *= 2
Select Case BigInteger.Compare(number1, number2)
Case -1
Console.WriteLine("{0} is greater than {1}.", number2, number1)
Case 0
Console.WriteLine("{0} is equal to {1}.", number1, number2)
Case 1
Console.WriteLine("{0} is greater than {1}.", number1, number2)
End Select
Else
If Not succeeded1 Then
Console.WriteLine("Unable to initialize the first BigInteger value.")
End If
If Not succeeded2 Then
Console.WriteLine("Unable to initialize the second BigInteger value.")
End If
End If
' The example displays the following output:
' 1975308642714319704 is greater than -37042602479685369.
Uwagi
Metoda jest podobna TryParse(String, BigInteger)Parse(String) do metody , z tą różnicą, że nie zgłasza wyjątku, jeśli konwersja nie powiedzie się. Ta metoda eliminuje konieczność użycia obsługi wyjątków w celu przetestowania elementu FormatException , jeśli value
jest nieprawidłowy i nie można go pomyślnie przeanalizować.
Parametr value
powinien być ciągiem reprezentującym liczbę dziesiętną w następującej postaci:
[ws] [podpis] digits[ws]
Elementy w nawiasach kwadratowych ([ i ]) są opcjonalne. W tabeli poniżej opisano każdy element.
Element | Opis |
---|---|
Ws | Opcjonalny odstęp. |
sign | Opcjonalny znak. Prawidłowe znaki są określane przez NumberFormatInfo.NegativeSign właściwości i NumberFormatInfo.PositiveSign bieżącej kultury. |
Cyfr | Sekwencja cyfr dziesiętnych od 0 do 9. |
Uwaga
Ciąg określony przez value
parametr nie może zawierać żadnych separatorów grup ani separatora dziesiętnego i nie może mieć części dziesiętnej.
Parametr value
jest interpretowany przy użyciu NumberStyles.Integer stylu. Poza cyframi dziesiętnymi dopuszcza się tylko spacje początkowe i końcowe z wiodącym znakiem. Aby jawnie zdefiniować elementy stylu z informacjami o formatowaniu specyficznymi dla kultury, które mogą być obecne w value
pliku , wywołaj metodę TryParse(String, NumberStyles, IFormatProvider, BigInteger) .
Parametr value
jest analizowany przy użyciu informacji o formatowaniu w NumberFormatInfo obiekcie dla bieżącej kultury. Aby uzyskać więcej informacji, zobacz NumberFormatInfo.CurrentInfo.
To przeciążenie interpretuje wszystkie cyfry w parametrze value
jako cyfry dziesiętne. Aby przeanalizować reprezentację ciągu liczby szesnastkowej, wywołaj zamiast tego TryParse(String, NumberStyles, IFormatProvider, BigInteger) przeciążenie.
Zobacz też
Dotyczy
TryParse(ReadOnlySpan<Char>, BigInteger)
- Źródło:
- BigInteger.cs
- Źródło:
- BigInteger.cs
- Źródło:
- BigInteger.cs
Próbuje przekonwertować reprezentację liczby zawartej w określonym zakresie znaków tylko do odczytu na jej BigInteger odpowiednik i zwraca wartość wskazującą, czy konwersja powiodła się.
public:
static bool TryParse(ReadOnlySpan<char> value, [Runtime::InteropServices::Out] System::Numerics::BigInteger % result);
public static bool TryParse (ReadOnlySpan<char> value, out System.Numerics.BigInteger result);
static member TryParse : ReadOnlySpan<char> * BigInteger -> bool
Public Shared Function TryParse (value As ReadOnlySpan(Of Char), ByRef result As BigInteger) As Boolean
Parametry
- value
- ReadOnlySpan<Char>
Reprezentacja liczby jako zakresu znaków tylko do odczytu.
- result
- BigInteger
Gdy ta metoda zwraca wartość , zawiera BigInteger odpowiednik liczby zawartej w value
liczbie lub zero (0), jeśli konwersja nie powiedzie się. Konwersja kończy się niepowodzeniem, value
jeśli parametr jest pustym zakresem znaków lub nie ma poprawnego formatu. Ten parametr jest przekazywany jako niezainicjowany.
Zwraca
true
jeśli value
pomyślnie przekonwertowano; w przeciwnym razie . false
Zobacz też
Dotyczy
TryParse(String, NumberStyles, IFormatProvider, BigInteger)
- Źródło:
- BigInteger.cs
- Źródło:
- BigInteger.cs
- Źródło:
- BigInteger.cs
Próbuje przekonwertować reprezentację ciągu liczby w określonym stylu i formacie specyficznym dla kultury na BigInteger jego odpowiednik i zwraca wartość wskazującą, czy konwersja zakończyła się pomyślnie.
public:
static bool TryParse(System::String ^ value, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] System::Numerics::BigInteger % result);
public:
static bool TryParse(System::String ^ value, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] System::Numerics::BigInteger % result) = System::Numerics::INumberBase<System::Numerics::BigInteger>::TryParse;
public static bool TryParse (string value, System.Globalization.NumberStyles style, IFormatProvider provider, out System.Numerics.BigInteger result);
public static bool TryParse (string? value, System.Globalization.NumberStyles style, IFormatProvider? provider, out System.Numerics.BigInteger result);
static member TryParse : string * System.Globalization.NumberStyles * IFormatProvider * BigInteger -> bool
Public Shared Function TryParse (value As String, style As NumberStyles, provider As IFormatProvider, ByRef result As BigInteger) As Boolean
Parametry
- value
- String
Reprezentacja ciągu liczby. 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 obiekcie value
. Typową wartością do określenia jest Integer.
- provider
- IFormatProvider
Obiekt, który dostarcza informacje o formatowaniu specyficznym dla kultury.value
- result
- BigInteger
Gdy ta metoda zwraca wartość , zawiera BigInteger odpowiednik liczby zawartej w value
elemencie lub Zero , jeśli konwersja nie powiodła się. Konwersja kończy się niepowodzeniem, value
jeśli parametr ma null
format zgodny z parametrem style
. Ten parametr jest przekazywany jako niezainicjowany.
Zwraca
true
value
jeśli parametr został pomyślnie przekonwertowany; w przeciwnym razie false
.
Wyjątki
style
nie jest wartością NumberStyles .
-lub-
style
zawiera flagę AllowHexSpecifier lub HexNumber wraz z inną wartością.
Przykłady
W poniższym przykładzie niektóre wywołania TryParse(String, NumberStyles, IFormatProvider, BigInteger) metody używają różnych kombinacji wartości parametrów style
i provider
.
string numericString;
BigInteger number = BigInteger.Zero;
// Call TryParse with default values of style and provider.
numericString = " -300 ";
if (BigInteger.TryParse(numericString, NumberStyles.Integer,
null, out number))
Console.WriteLine("'{0}' was converted to {1}.",
numericString, number);
else
Console.WriteLine("Conversion of '{0}' to a BigInteger failed.",
numericString);
// Call TryParse with the default value of style and
// a provider supporting the tilde as negative sign.
numericString = " -300 ";
if (BigInteger.TryParse(numericString, NumberStyles.Integer,
new BigIntegerFormatProvider(), out number))
Console.WriteLine("'{0}' was converted to {1}.",
numericString, number);
else
Console.WriteLine("Conversion of '{0}' to a BigInteger failed.",
numericString);
// Call TryParse with only AllowLeadingWhite and AllowTrailingWhite.
// Method returns false because of presence of negative sign.
numericString = " -500 ";
if (BigInteger.TryParse(numericString,
NumberStyles.AllowLeadingWhite | NumberStyles.AllowTrailingWhite,
new BigIntegerFormatProvider(), out number))
Console.WriteLine("'{0}' was converted to {1}.",
numericString, number);
else
Console.WriteLine("Conversion of '{0}' to a BigInteger failed.",
numericString);
// Call TryParse with AllowHexSpecifier and a hex value.
numericString = "F14237FFAAC086455192";
if (BigInteger.TryParse(numericString,
NumberStyles.AllowHexSpecifier,
null, out number))
Console.WriteLine("'{0}' was converted to {1} (0x{1:x}).",
numericString, number);
else
Console.WriteLine("Conversion of '{0}' to a BigInteger failed.",
numericString);
// Call TryParse with AllowHexSpecifier and a negative hex value.
// Conversion fails because of presence of negative sign.
numericString = "-3af";
if (BigInteger.TryParse(numericString, NumberStyles.AllowHexSpecifier,
new BigIntegerFormatProvider(), out number))
Console.WriteLine("'{0}' was converted to {1}.",
numericString, number);
else
Console.WriteLine("Conversion of '{0}' to a BigInteger failed.",
numericString);
// Call TryParse with only NumberStyles.None.
// Conversion fails because of presence of white space and sign.
numericString = " -300 ";
if (BigInteger.TryParse(numericString, NumberStyles.None,
new BigIntegerFormatProvider(), out number))
Console.WriteLine("'{0}' was converted to {1}.",
numericString, number);
else
Console.WriteLine("Conversion of '{0}' to a BigInteger failed.",
numericString);
// Call TryParse with NumberStyles.Any and a provider for the fr-FR culture.
// Conversion fails because the string is formatted for the en-US culture.
numericString = "9,031,425,666,123,546.00";
if (BigInteger.TryParse(numericString, NumberStyles.Any,
new CultureInfo("fr-FR"), out number))
Console.WriteLine("'{0}' was converted to {1}.",
numericString, number);
else
Console.WriteLine("Conversion of '{0}' to a BigInteger failed.",
numericString);
// Call TryParse with NumberStyles.Any and a provider for the fr-FR culture.
// Conversion succeeds because the string is properly formatted
// For the fr-FR culture.
numericString = "9 031 425 666 123 546,00";
if (BigInteger.TryParse(numericString, NumberStyles.Any,
new CultureInfo("fr-FR"), out number))
Console.WriteLine("'{0}' was converted to {1}.",
numericString, number);
else
Console.WriteLine("Conversion of '{0}' to a BigInteger failed.",
numericString);
// The example displays the following output:
// ' -300 ' was converted to -300.
// Conversion of ' -300 ' to a BigInteger failed.
// Conversion of ' -500 ' to a BigInteger failed.
// 'F14237FFAAC086455192' was converted to -69613977002644837412462 (0xf14237ffaac086455192).
// Conversion of '-3af' to a BigInteger failed.
// Conversion of ' -300 ' to a BigInteger failed.
// Conversion of '9,031,425,666,123,546.00' to a BigInteger failed.
// '9 031 425 666 123 546,00' was converted to 9031425666123546.
// Call TryParse with default values of style and provider.
let numericString = " -300 "
match BigInteger.TryParse(numericString, NumberStyles.Integer, null) with
| true, number -> printfn $"The string '{numericString}' parses to {number}"
| _ -> printfn $"Conversion of {numericString} to a BigInteger failed."
// Call TryParse with the default value of style and
// a provider supporting the tilde as negative sign.
let numericString = " -300 "
match BigInteger.TryParse(numericString, NumberStyles.Integer, new BigIntegerFormatProvider()) with
| true, number -> printfn $"The string '{numericString}' parses to {number}"
| _ -> printfn $"Conversion of {numericString} to a BigInteger failed."
// Call TryParse with only AllowLeadingWhite and AllowTrailingWhite.
// Method returns false because of presence of negative sign.
let numericString = " -500 "
match
BigInteger.TryParse(
numericString,
NumberStyles.AllowLeadingWhite ||| NumberStyles.AllowTrailingWhite,
new BigIntegerFormatProvider()
)
with
| true, number -> printfn $"The string '{numericString}' parses to {number}"
| _ -> printfn $"Conversion of {numericString} to a BigInteger failed."
// Call TryParse with AllowHexSpecifier and a hex value.
let numericString = "F14237FFAAC086455192"
match BigInteger.TryParse(numericString, NumberStyles.AllowHexSpecifier, null) with
| true, number -> printfn $"The string '{numericString}' parses to {number}, or 0x{number:x}."
| _ -> printfn $"Conversion of {numericString} to a BigInteger failed."
// Call TryParse with AllowHexSpecifier and a negative hex value.
// Conversion fails because of presence of negative sign.
let numericString = "-3af"
match BigInteger.TryParse(numericString, NumberStyles.AllowHexSpecifier, null) with
| true, number -> printfn $"The string '{numericString}' parses to {number}, or 0x{number:x}."
| _ -> printfn $"Conversion of {numericString} to a BigInteger failed."
// Call TryParse with only NumberStyles.None.
// Conversion fails because of presence of white space and sign.
let numericString = " -300 "
match BigInteger.TryParse(numericString, NumberStyles.None, new BigIntegerFormatProvider()) with
| true, number -> printfn $"The string '{numericString}' parses to {number}"
| _ -> printfn $"Conversion of {numericString} to a BigInteger failed."
// Call TryParse with NumberStyles.Any and a provider for the fr-FR culture.
// Conversion fails because the string is formatted for the en-US culture.
let numericString = "9,031,425,666,123,546.00"
match BigInteger.TryParse(numericString, NumberStyles.Any, new CultureInfo("fr-FR")) with
| true, number -> printfn $"The string '{numericString}' parses to {number}"
| _ -> printfn $"Conversion of {numericString} to a BigInteger failed."
// Call TryParse with NumberStyles.Any and a provider for the fr-FR culture.
// Conversion succeeds because the string is properly formatted
// For the fr-FR culture.
let numericString = "9 031 425 666 123 546,00"
match BigInteger.TryParse(numericString, NumberStyles.Any, new CultureInfo("fr-FR")) with
| true, number -> printfn $"The string '{numericString}' parses to {number}"
| _ -> printfn $"Conversion of {numericString} to a BigInteger failed."
// The example displays the following output:
// ' -300 ' was converted to -300.
// Conversion of ' -300 ' to a BigInteger failed.
// Conversion of ' -500 ' to a BigInteger failed.
// 'F14237FFAAC086455192' was converted to -69613977002644837412462 (0xf14237ffaac086455192).
// Conversion of '-3af' to a BigInteger failed.
// Conversion of ' -300 ' to a BigInteger failed.
// Conversion of '9,031,425,666,123,546.00' to a BigInteger failed.
// '9 031 425 666 123 546,00' was converted to 9031425666123546.
Dim numericString As String
Dim number As BigInteger = BigInteger.Zero
' Call TryParse with default values of style and provider.
numericString = " -300 "
If BigInteger.TryParse(numericString, NumberStyles.Integer,
Nothing, number) Then
Console.WriteLine("'{0}' was converted to {1}.",
numericString, number)
Else
Console.WriteLine("Conversion of '{0}' to a BigInteger failed.",
numericString)
End If
' Call TryParse with the default value of style and
' a provider supporting the tilde as negative sign.
numericString = " -300 "
If BigInteger.TryParse(numericString, NumberStyles.Integer,
New BigIntegerFormatProvider(), number) Then
Console.WriteLine("'{0}' was converted to {1}.",
numericString, number)
Else
Console.WriteLine("Conversion of '{0}' to a BigInteger failed.",
numericString)
End If
' Call TryParse with only AllowLeadingWhite and AllowTrailingWhite.
' Method returns false because of presence of negative sign.
numericString = " -500 "
If BigInteger.TryParse(numericString,
NumberStyles.AllowLeadingWhite Or NumberStyles.AllowTrailingWhite,
New BigIntegerFormatProvider(), number) Then
Console.WriteLine("'{0}' was converted to {1}.",
numericString, number)
Else
Console.WriteLine("Conversion of '{0}' to a BigInteger failed.",
numericString)
End If
' Call TryParse with AllowHexSpecifier and a hex value.
numericString = "F14237FFAAC086455192"
If BigInteger.TryParse(numericString,
NumberStyles.AllowHexSpecifier,
Nothing, number) Then
Console.WriteLine("'{0}' was converted to {1} (0x{1:x}).",
numericString, number)
Else
Console.WriteLine("Conversion of '{0}' to a BigInteger failed.",
numericString)
End If
' Call TryParse with AllowHexSpecifier and a negative hex value.
' Conversion fails because of presence of negative sign.
numericString = "-3af"
If BigInteger.TryParse(numericString, NumberStyles.AllowHexSpecifier,
New BigIntegerFormatProvider(), number) Then
Console.WriteLine("'{0}' was converted to {1}.",
numericString, number)
Else
Console.WriteLine("Conversion of '{0}' to a BigInteger failed.",
numericString)
End If
' Call TryParse with only NumberStyles.None.
' Conversion fails because of presence of white space and sign.
numericString = " -300 "
If BigInteger.TryParse(numericString, NumberStyles.None,
New BigIntegerFormatProvider(), number) Then
Console.WriteLine("'{0}' was converted to {1}.",
numericString, number)
Else
Console.WriteLine("Conversion of '{0}' to a BigInteger failed.",
numericString)
End If
' Call TryParse with NumberStyles.Any and a provider for the fr-FR culture.
' Conversion fails because the string is formatted for the en-US culture.
numericString = "9,031,425,666,123,546.00"
If BigInteger.TryParse(numericString, NumberStyles.Any,
New CultureInfo("fr-FR"), number) Then
Console.WriteLine("'{0}' was converted to {1}.",
numericString, number)
Else
Console.WriteLine("Conversion of '{0}' to a BigInteger failed.",
numericString)
End If
' Call TryParse with NumberStyles.Any and a provider for the fr-FR culture.
' Conversion succeeds because the string is properly formatted
' For the fr-FR culture.
numericString = "9 031 425 666 123 546,00"
If BigInteger.TryParse(numericString, NumberStyles.Any,
New CultureInfo("fr-FR"), number) Then
Console.WriteLine("'{0}' was converted to {1}.",
numericString, number)
Else
Console.WriteLine("Conversion of '{0}' to a BigInteger failed.",
numericString)
End If
' The example displays the following output:
' ' -300 ' was converted to -300.
' Conversion of ' -300 ' to a BigInteger failed.
' Conversion of ' -500 ' to a BigInteger failed.
' 'F14237FFAAC086455192' was converted to -69613977002644837412462 (0xf14237ffaac086455192).
' Conversion of '-3af' to a BigInteger failed.
' Conversion of ' -300 ' to a BigInteger failed.
' Conversion of '9,031,425,666,123,546.00' to a BigInteger failed.
' '9 031 425 666 123 546,00' was converted to 9031425666123546.
Liczba pojedynczych wywołań TryParse(String, NumberStyles, IFormatProvider, BigInteger) metody przekazuje wystąpienie następującej BigIntegerFormatProvider
klasy, która definiuje tyldę (~) jako znak ujemny.
public class BigIntegerFormatProvider : IFormatProvider
{
public object GetFormat(Type formatType)
{
if (formatType == typeof(NumberFormatInfo))
{
NumberFormatInfo numberFormat = new NumberFormatInfo();
numberFormat.NegativeSign = "~";
return numberFormat;
}
else
{
return null;
}
}
}
type BigIntegerFormatProvider() =
interface IFormatProvider with
member _.GetFormat(formatType: Type) =
if formatType = typeof<NumberFormatInfo> then
let numberFormat = new NumberFormatInfo()
numberFormat.NegativeSign <- "~"
numberFormat
else
null
Public Class BigIntegerFormatProvider : Implements IFormatProvider
Public Function GetFormat(formatType As Type) As Object _
Implements IFormatProvider.GetFormat
If formatType Is GetType(NumberFormatInfo) Then
Dim numberFormat As New NumberFormatInfo
numberFormat.NegativeSign = "~"
Return numberFormat
Else
Return Nothing
End If
End Function
End Class
Uwagi
Metoda jest podobna TryParse(String, NumberStyles, IFormatProvider, BigInteger)Parse(String, NumberStyles, IFormatProvider) do metody , z tą różnicą, że nie zgłasza wyjątku, jeśli konwersja nie powiedzie się. Ta metoda eliminuje konieczność użycia obsługi wyjątków w celu przetestowania elementu FormatException , jeśli value
jest nieprawidłowy i nie można go pomyślnie przeanalizować.
Parametr style
definiuje elementy stylu (takie jak biały znak lub znak dodatni lub ujemny), które są dozwolone w parametrze value
, aby operacja analizy zakończyła się pomyślnie. Musi to być kombinacja flag bitowych z NumberStyles wyliczenia. W zależności od wartości style
parametr może value
zawierać następujące elementy:
[ws] [$][znak][cyfry,]cyfry[.fractional_digits][E[znak]exponential_digits][ws]
style
Jeśli parametr zawiera AllowHexSpecifierparametr , value
parametr może zawierać następujące elementy:
[ws] hexdigits[ws]
Elementy w nawiasach kwadratowych ([ i ]) są opcjonalne. W tabeli poniżej opisano każdy element.
Element | Opis |
---|---|
Ws | Opcjonalny odstęp. Białe znaki mogą pojawić się na początku value , jeśli style zawiera flagę NumberStyles.AllowLeadingWhite lub na końcu value , jeśli style zawiera flagę NumberStyles.AllowTrailingWhite . |
$ | Symbol waluty specyficzny dla kultury. Jego pozycja w ciągu jest definiowana przez CurrencyPositivePattern właściwość NumberFormatInfo obiektu zwróconego przez GetFormat metodę parametru provider . Symbol waluty może pojawić się, value jeśli style zawiera flagę NumberStyles.AllowCurrencySymbol . |
sign | Opcjonalny znak. Znak może pojawić się na początku value , jeśli style zawiera flagę NumberStyles.AllowLeadingSign i może pojawić się na końcu value , jeśli style zawiera flagę NumberStyles.AllowTrailingSign . Nawiasy mogą służyć value do wskazywania wartości ujemnej, jeśli style zawiera flagę NumberStyles.AllowParentheses . |
Cyfr | Sekwencja cyfr od 0 do 9. |
, | Separator grupy specyficzny dla kultury. Separator grupy kultury określonej przez provider może pojawić się w pliku , value jeśli style zawiera flagę NumberStyles.AllowThousands . |
. | Symbol dziesiętny specyficzny dla kultury. Symbol punktu dziesiętnego kultury określonej przez provider program może pojawić się w value pliku , jeśli style zawiera flagę NumberStyles.AllowDecimalPoint . |
fractional_digits | Jedno lub więcej wystąpień cyfry 0. Cyfry ułamkowe mogą być wyświetlane tylko wtedy value , gdy style zawiera flagę NumberStyles.AllowDecimalPoint . |
E | Znak „e” lub „E”, który wskazuje, że wartość jest reprezentowana w zapisie wykładniczym (naukowym). Parametr value może reprezentować liczbę w notacji wykładniczej, jeśli style zawiera flagę NumberStyles.AllowExponent . |
exponential_digits | Sekwencja cyfr od 0 do 9. Parametr value może reprezentować liczbę w notacji wykładniczej, jeśli style zawiera flagę NumberStyles.AllowExponent . |
hexdigits | Sekwencja cyfr szesnastkowych od 0 do f lub od 0 do F. |
Uwaga
Wszelkie znaki zakończenia NUL (U+0000) w obiekcie s
są ignorowane przez operację analizowania, niezależnie od wartości argumentu style
.
Ciąg z cyframi dziesiętnymi (odpowiadający NumberStyles.None flagi) zawsze jest analizowanych pomyślnie. Większość pozostałych NumberStyles elementów członkowskich kontrolki, które mogą być obecne, ale nie są wymagane do obecności, w tym ciągu wejściowym. Poniższa tabela wskazuje, jak poszczególne NumberStyles elementy członkowskie wpływają na elementy, które mogą być obecne w elemecie value
.
Wartości nieskładne NumberStyles |
Dodatkowe (poza cyframi) elementy dozwolone w wartości |
---|---|
None | Tylko cyfry dziesiętne. |
AllowDecimalPoint | Elementy dziesiętne (.) i fractional_digits . Jednak fractional_digits musi składać się tylko z co najmniej jednej cyfry lub zwraca false metodę . |
AllowExponent | Znak "e" lub "E", który wskazuje notację wykładniczą wraz z exponential_digits. Jeśli value reprezentuje liczbę w notacji wykładniczej, nie może mieć składnika niezerowego, ułamkowego. |
AllowLeadingWhite | Element ws na początku value . |
AllowTrailingWhite | Element ws na końcu value elementu . |
AllowLeadingSign | Element znaku przed cyframi. |
AllowTrailingSign | Element znaku po cyfrach. |
AllowParentheses | Element znaku w postaci nawiasów otaczających wartość liczbową. |
AllowThousands | Element separatora grupy (,). |
AllowCurrencySymbol | Element waluty ($). |
Currency | Wszystkie elementy.
value Nie można jednak reprezentować liczby szesnastkowej ani liczby w notacji wykładniczej. |
Float | Element ws na początku lub na końcu value , znak na początku value , i symbol dziesiętny (.). Parametr value może również używać notacji wykładniczej. |
Number | Elementy ws, sign, group separator (,) i dziesiętne (.). |
Any | Wszystkie elementy.
value Nie można jednak reprezentować liczby szesnastkowej. |
Ważne
Jeśli używasz TryParse metody , aby zaokrąglić ciąg reprezentujący BigInteger wartość, która została wygenerowana przez ToString metodę, należy użyć BigInteger.ToString(String) metody z specyfikatorem formatu "R", aby wygenerować reprezentację BigInteger ciągu wartości. W przeciwnym razie reprezentacja BigInteger ciągu zachowuje tylko 50 najbardziej znaczących cyfr oryginalnej wartości, a dane mogą zostać utracone, gdy użyjesz TryParse metody w celu przywrócenia BigInteger wartości.
Jeśli jest używana flaga NumberStyles.AllowHexSpecifier , value
musi być wartością szesnastkową. Jedynymi innymi flagami, które mogą być obecne, style
są NumberStyles.AllowLeadingWhite i NumberStyles.AllowTrailingWhite. (Wyliczenie NumberStyles ma styl złożony, HexNumber, który zawiera obie flagi odstępu).
Uwaga
Jeśli value
jest reprezentacją ciągu liczby szesnastkowej, nie może być poprzedzona żadną dekoracją (taką jak 0x
lub &h
), która rozróżnia ją jako liczbę szesnastkowa. To powoduje niepowodzenie konwersji.
Jeśli value
jest ciągiem szesnastkowym, TryParse(String, NumberStyles, IFormatProvider, BigInteger) metoda interpretuje value
jako liczbę ujemną przechowywaną przy użyciu reprezentacji uzupełniającej dwóch pierwszych cyfr szesnastkowych jest większa lub równa 0x80
. Innymi słowy, metoda interpretuje bit o najwyższej kolejności pierwszego bajtu w value
postaci bitu znaku. Aby upewnić się, że ciąg szesnastkowy jest poprawnie interpretowany jako liczba dodatnia, pierwsza cyfra w value
musi mieć wartość zero. Na przykład metoda interpretuje 0x80
jako wartość ujemną, ale interpretuje wartość 0x080
lub 0x0080
jako wartość dodatnią. W poniższym przykładzie przedstawiono różnicę między ciągami szesnastkowymi reprezentującymi wartości ujemne i dodatnie.
using System;
using System.Globalization;
using System.Numerics;
public class Example
{
public static void Main()
{
string[] hexStrings = { "80", "E293", "F9A2FF", "FFFFFFFF",
"080", "0E293", "0F9A2FF", "0FFFFFFFF",
"0080", "00E293", "00F9A2FF", "00FFFFFFFF" };
BigInteger number = BigInteger.Zero;
foreach (string hexString in hexStrings)
{
if (BigInteger.TryParse(hexString, NumberStyles.AllowHexSpecifier,
null, out number))
Console.WriteLine("Converted 0x{0} to {1}.", hexString, number);
else
Console.WriteLine("Cannot convert '{0}' to a BigInteger.", hexString);
}
}
}
// The example displays the following output:
// Converted 0x80 to -128.
// Converted 0xE293 to -7533.
// Converted 0xF9A2FF to -417025.
// Converted 0xFFFFFFFF to -1.
// Converted 0x080 to 128.
// Converted 0x0E293 to 58003.
// Converted 0x0F9A2FF to 16360191.
// Converted 0x0FFFFFFFF to 4294967295.
// Converted 0x0080 to 128.
// Converted 0x00E293 to 58003.
// Converted 0x00F9A2FF to 16360191.
// Converted 0x00FFFFFFFF to 4294967295.
open System.Globalization
open System.Numerics
let hexStrings =
[| "80"
"E293"
"F9A2FF"
"FFFFFFFF"
"080"
"0E293"
"0F9A2FF"
"0FFFFFFFF"
"0080"
"00E293"
"00F9A2FF"
"00FFFFFFFF" |]
for hexString in hexStrings do
match BigInteger.TryParse(hexString, NumberStyles.AllowHexSpecifier, null) with
| true, number -> printfn $"Converted 0x{hexString} to {number}."
| _ -> printfn $"Cannot convert '{hexString}' to a BigInteger."
// The example displays the following output:
// Converted 0x80 to -128.
// Converted 0xE293 to -7533.
// Converted 0xF9A2FF to -417025.
// Converted 0xFFFFFFFF to -1.
// Converted 0x080 to 128.
// Converted 0x0E293 to 58003.
// Converted 0x0F9A2FF to 16360191.
// Converted 0x0FFFFFFFF to 4294967295.
// Converted 0x0080 to 128.
// Converted 0x00E293 to 58003.
// Converted 0x00F9A2FF to 16360191.
// Converted 0x00FFFFFFFF to 4294967295.
Imports System.Globalization
Imports System.Numerics
Module Example
Public Sub Main()
Dim hexStrings() As String = { "80", "E293", "F9A2FF", "FFFFFFFF",
"080", "0E293", "0F9A2FF", "0FFFFFFFF",
"0080", "00E293", "00F9A2FF", "00FFFFFFFF" }
Dim number As BigInteger = BigInteger.Zero
For Each hexString As String In hexStrings
If BigInteger.TryParse(hexString, NumberStyles.AllowHexSpecifier,
Nothing, number) Then
Console.WriteLine("Converted 0x{0} to {1}.", hexString, number)
Else
Console.WriteLine("Cannot convert '{0}' to a BigInteger.", hexString)
End If
Next
End Sub
End Module
' The example displays the following output:
' Converted 0x80 to -128.
' Converted 0xE293 to -7533.
' Converted 0xF9A2FF to -417025.
' Converted 0xFFFFFFFF to -1.
' Converted 0x080 to 128.
' Converted 0x0E293 to 58003.
' Converted 0x0F9A2FF to 16360191.
' Converted 0x0FFFFFFFF to 4294967295.
' Converted 0x0080 to 128.
' Converted 0x00E293 to 58003.
' Converted 0x00F9A2FF to 16360191.
' Converted 0x00FFFFFFFF to 4294967295.
Parametr provider
jest implementacją IFormatProvider . Metoda GetFormat zwraca NumberFormatInfo obiekt, który udostępnia informacje specyficzne dla kultury dotyczące formatu value
. Parametr provider
może być jednym z następujących:
CultureInfo Obiekt reprezentujący kulturę, która dostarcza informacje o formatowaniu. Metoda GetFormat zwraca NumberFormatInfo obiekt, który udostępnia informacje o formatowaniu liczbowym dla tej kultury.
NumberFormatInfo Obiekt, który udostępnia informacje o formatowaniu liczbowym. (Jego implementacja GetFormat po prostu zwraca się).
Obiekt niestandardowy, który implementuje IFormatProviderelement . Metoda GetFormat tworzy wystąpienie i zwraca NumberFormatInfo obiekt, który udostępnia informacje o formatowaniu.
Jeśli provider
jest to null
, NumberFormatInfo używany jest obiekt bieżącej kultury.