Decimal.TryParse Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Konverterar strängrepresentationen av ett tal till dess Decimal motsvarighet. Ett returvärde anger om konverteringen lyckades eller misslyckades.
Överlagringar
| Name | Description |
|---|---|
| TryParse(ReadOnlySpan<Byte>, Decimal) |
Försöker konvertera ett UTF-8-teckensintervall som innehåller strängrepresentationen av ett tal till dess signerade decimalmotsvarighet. |
| TryParse(ReadOnlySpan<Char>, Decimal) |
Konverterar spanrepresentationen av ett tal till dess Decimal motsvarighet med det kulturspecifika formatet. Ett returvärde anger om konverteringen lyckades eller misslyckades. |
| TryParse(String, Decimal) |
Konverterar strängrepresentationen av ett tal till dess Decimal motsvarighet. Ett returvärde anger om konverteringen lyckades eller misslyckades. |
| TryParse(ReadOnlySpan<Byte>, IFormatProvider, Decimal) |
Försöker parsa ett intervall med UTF-8 tecken till ett värde. |
| TryParse(ReadOnlySpan<Char>, IFormatProvider, Decimal) |
Försöker parsa ett teckenintervall till ett värde. |
| TryParse(String, IFormatProvider, Decimal) |
Försöker parsa en sträng till ett värde. |
| TryParse(ReadOnlySpan<Byte>, NumberStyles, IFormatProvider, Decimal) |
Försöker parsa ett intervall med UTF-8 tecken till ett värde. |
| TryParse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider, Decimal) |
Konverterar spännviddsrepresentationen av ett tal till dess Decimal motsvarighet med det angivna formatet och det kulturspecifika formatet. Ett returvärde anger om konverteringen lyckades eller misslyckades. |
| TryParse(String, NumberStyles, IFormatProvider, Decimal) |
Konverterar strängrepresentationen av ett tal till dess Decimal motsvarighet med det angivna formatet och det kulturspecifika formatet. Ett returvärde anger om konverteringen lyckades eller misslyckades. |
TryParse(ReadOnlySpan<Byte>, Decimal)
- Källa:
- Decimal.cs
- Källa:
- Decimal.cs
- Källa:
- Decimal.cs
- Källa:
- Decimal.cs
Försöker konvertera ett UTF-8-teckensintervall som innehåller strängrepresentationen av ett tal till dess signerade decimalmotsvarighet.
public:
static bool TryParse(ReadOnlySpan<System::Byte> utf8Text, [Runtime::InteropServices::Out] System::Decimal % result);
public static bool TryParse(ReadOnlySpan<byte> utf8Text, out decimal result);
static member TryParse : ReadOnlySpan<byte> * decimal -> bool
Public Shared Function TryParse (utf8Text As ReadOnlySpan(Of Byte), ByRef result As Decimal) As Boolean
Parametrar
- utf8Text
- ReadOnlySpan<Byte>
Ett intervall som innehåller UTF-8 tecken som representerar talet som ska konverteras.
- result
- Decimal
När den här metoden returnerar innehåller det signerade decimalvärdet som motsvarar talet i utf8Text om konverteringen lyckades eller noll om konverteringen misslyckades. Den här parametern skickas onitialiserad; alla värden som ursprungligen angavs i resultatet skrivs över.
Returer
true om utf8Text har konverterats, annars false.
Gäller för
TryParse(ReadOnlySpan<Char>, Decimal)
- Källa:
- Decimal.cs
- Källa:
- Decimal.cs
- Källa:
- Decimal.cs
- Källa:
- Decimal.cs
- Källa:
- Decimal.cs
Konverterar spanrepresentationen av ett tal till dess Decimal motsvarighet med det kulturspecifika formatet. Ett returvärde anger om konverteringen lyckades eller misslyckades.
public:
static bool TryParse(ReadOnlySpan<char> s, [Runtime::InteropServices::Out] System::Decimal % result);
public static bool TryParse(ReadOnlySpan<char> s, out decimal result);
static member TryParse : ReadOnlySpan<char> * decimal -> bool
Public Shared Function TryParse (s As ReadOnlySpan(Of Char), ByRef result As Decimal) As Boolean
Parametrar
- s
- ReadOnlySpan<Char>
Ett intervall som innehåller de tecken som representerar talet som ska konverteras.
- result
- Decimal
När den här metoden returneras innehåller det Decimal tal som motsvarar det numeriska värdet i s, om konverteringen lyckades eller noll om konverteringen misslyckades. Konverteringen misslyckas om parametern s är eller null representerar ett tal som är Empty mindre än Decimal.MinValue eller större än Decimal.MaxValue. Den här parametern skickas uininitialiserad; alla värden som ursprungligen angavs i result skrivs över.
Returer
true om s har konverterats, annars false.
Gäller för
TryParse(String, Decimal)
- Källa:
- Decimal.cs
- Källa:
- Decimal.cs
- Källa:
- Decimal.cs
- Källa:
- Decimal.cs
- Källa:
- Decimal.cs
Konverterar strängrepresentationen av ett tal till dess Decimal motsvarighet. Ett returvärde anger om konverteringen lyckades eller misslyckades.
public:
static bool TryParse(System::String ^ s, [Runtime::InteropServices::Out] System::Decimal % result);
public static bool TryParse(string s, out decimal result);
public static bool TryParse(string? s, out decimal result);
static member TryParse : string * decimal -> bool
Public Shared Function TryParse (s As String, ByRef result As Decimal) As Boolean
Parametrar
- s
- String
Strängrepresentationen av talet som ska konverteras.
- result
- Decimal
När den här metoden returneras innehåller det Decimal tal som motsvarar det numeriska värdet i s, om konverteringen lyckades eller noll om konverteringen misslyckades. Konverteringen misslyckas om parametern s är null eller Empty, inte är ett tal i ett giltigt format eller representerar ett tal som är mindre än Decimal.MinValue eller större än Decimal.MaxValue. Den här parametern skickas uininitialiserad; alla värden som ursprungligen angavs i result skrivs över.
Returer
true om s har konverterats, annars false.
Exempel
I följande exempel används Decimal.TryParse(String, Decimal) metoden för att konvertera strängrepresentationer av numeriska värden till Decimal värden. Det förutsätter att en-US är den nuvarande kulturen.
string value;
decimal number;
// Parse a floating-point value with a thousands separator.
value = "1,643.57";
if (Decimal.TryParse(value, out number))
Console.WriteLine(number);
else
Console.WriteLine("Unable to parse '{0}'.", value);
// Parse a floating-point value with a currency symbol and a
// thousands separator.
value = "$1,643.57";
if (Decimal.TryParse(value, out number))
Console.WriteLine(number);
else
Console.WriteLine("Unable to parse '{0}'.", value);
// Parse value in exponential notation.
value = "-1.643e6";
if (Decimal.TryParse(value, out number))
Console.WriteLine(number);
else
Console.WriteLine("Unable to parse '{0}'.", value);
// Parse a negative integer value.
value = "-1689346178821";
if (Decimal.TryParse(value, out number))
Console.WriteLine(number);
else
Console.WriteLine("Unable to parse '{0}'.", value);
// The example displays the following output to the console:
// 1643.57
// Unable to parse '$1,643.57'.
// Unable to parse '-1.643e6'.
// -1689346178821
// Parse a floating-point value with a thousands separator.
let value = "1,643.57"
match Decimal.TryParse value with
| true, number ->
printfn $"{number}"
| _ ->
printfn $"Unable to parse '{value}'."
// Parse a floating-point value with a currency symbol and a
// thousands separator.
let value = "$1,643.57"
match Decimal.TryParse value with
| true, number ->
printfn $"{number}"
| _ ->
printfn $"Unable to parse '{value}'."
// Parse value in exponential notation.
let value = "-1.643e6"
match Decimal.TryParse value with
| true, number ->
printfn $"{number}"
| _ ->
printfn $"Unable to parse '{value}'."
// Parse a negative integer value.
let value = "-1689346178821"
match Decimal.TryParse value with
| true, number ->
printfn $"{number}"
| _ ->
printfn $"Unable to parse '{value}'."
// The example displays the following output to the console:
// 1643.57
// Unable to parse '$1,643.57'.
// Unable to parse '-1.643e6'.
// -1689346178821
Dim value As String
Dim number As Decimal
' Parse a floating-point value with a thousands separator.
value = "1,643.57"
If Decimal.TryParse(value, number) Then
Console.WriteLine(number)
Else
Console.WriteLine("Unable to parse '{0}'.", value)
End If
' Parse a floating-point value with a currency symbol and a
' thousands separator.
value = "$1,643.57"
If Decimal.TryParse(value, number) Then
Console.WriteLine(number)
Else
Console.WriteLine("Unable to parse '{0}'.", value)
End If
' Parse value in exponential notation.
value = "-1.643e6"
If Decimal.TryParse(value, number)
Console.WriteLine(number)
Else
Console.WriteLine("Unable to parse '{0}'.", value)
End If
' Parse a negative integer value.
value = "-1689346178821"
If Decimal.TryParse(value, number)
Console.WriteLine(number)
Else
Console.WriteLine("Unable to parse '{0}'.", value)
End If
' The example displays the following output to the console:
' 1643.57
' Unable to parse '$1,643.57'.
' Unable to parse '-1.643e6'.
' -1689346178821
Kommentarer
Den här överlagringen Decimal.Parse(String) skiljer sig från metoden genom att returnera ett booleskt värde som anger om parsningsåtgärden lyckades i stället för att returnera det parsade numeriska värdet. Det eliminerar behovet av att använda undantagshantering för att testa för en FormatException i händelse av att s den är ogiltig och inte kan parsas.
Parametern s innehåller ett antal av formuläret:
[ws][sign][siffror,]siffror[.fractional-digits][ws]
Element inom hakparenteser ([ och ]) är valfria. I följande tabell beskrivs varje element.
| Element | Description |
|---|---|
| Ws | Valfritt blanksteg. |
| signera | Ett valfritt tecken. |
| Siffror | En sekvens med siffror mellan 0 och 9. |
| , | En kulturspecifik tusentalsavgränsare. |
| . | Ett kulturspecifikt decimaltecken. |
| fractional-digits | En sekvens med siffror mellan 0 och 9. |
Parametern s tolkas med formatet NumberStyles.Number . Det innebär att blanksteg och tusentalsavgränsare tillåts, men inte valutasymboler. Om du uttryckligen vill definiera de element (till exempel valutasymboler, tusentalsavgränsare och blanksteg) som kan finnas i sanvänder du Decimal.TryParse(String, NumberStyles, IFormatProvider, Decimal) metodens överbelastning.
Parametern s parsas med formateringsinformationen i ett NumberFormatInfo objekt som initierats för den aktuella systemkulturen. Mer information finns i CurrentInfo. Om du vill parsa en sträng med formateringsinformationen för någon annan angiven kultur använder du Decimal.TryParse(String, NumberStyles, IFormatProvider, Decimal) metodens överlagring.
Vid behov avrundas s värdet för med avrundning till närmaste.
Ett Decimal objekt har 29 siffror med precision. Om s representerar ett tal som har fler än 29 siffror, men har en bråkdelsdel och ligger inom intervallet MaxValue för och MinValue, avrundas talet, inte trunkeras, till 29 siffror med avrundning till närmaste.
Om en avgränsare påträffas i parametern s under en parsningsåtgärd och tillämpliga decimaler för valuta eller tal och gruppavgränsare är desamma, förutsätter parsningsåtgärden att avgränsaren är en decimalavgränsare i stället för en gruppavgränsare. Mer information om avgränsare finns i CurrencyDecimalSeparator, NumberDecimalSeparator, CurrencyGroupSeparatoroch NumberGroupSeparator.
Se även
Gäller för
TryParse(ReadOnlySpan<Byte>, IFormatProvider, Decimal)
- Källa:
- Decimal.cs
- Källa:
- Decimal.cs
- Källa:
- Decimal.cs
- Källa:
- Decimal.cs
Försöker parsa ett intervall med UTF-8 tecken till ett värde.
public:
static bool TryParse(ReadOnlySpan<System::Byte> utf8Text, IFormatProvider ^ provider, [Runtime::InteropServices::Out] System::Decimal % result) = IUtf8SpanParsable<System::Decimal>::TryParse;
public static bool TryParse(ReadOnlySpan<byte> utf8Text, IFormatProvider? provider, out decimal result);
static member TryParse : ReadOnlySpan<byte> * IFormatProvider * decimal -> bool
Public Shared Function TryParse (utf8Text As ReadOnlySpan(Of Byte), provider As IFormatProvider, ByRef result As Decimal) As Boolean
Parametrar
- utf8Text
- ReadOnlySpan<Byte>
Intervallet för UTF-8 tecken att parsa.
- provider
- IFormatProvider
Ett objekt som tillhandahåller kulturspecifik formateringsinformation om utf8Text.
- result
- Decimal
Vid retur innehåller resultatet av parsning utf8Text eller ett odefinierat värde vid fel.
Returer
trueom utf8Text har parsats, annars . false
Gäller för
TryParse(ReadOnlySpan<Char>, IFormatProvider, Decimal)
- Källa:
- Decimal.cs
- Källa:
- Decimal.cs
- Källa:
- Decimal.cs
- Källa:
- Decimal.cs
- Källa:
- Decimal.cs
Försöker parsa ett teckenintervall till ett värde.
public:
static bool TryParse(ReadOnlySpan<char> s, IFormatProvider ^ provider, [Runtime::InteropServices::Out] System::Decimal % result) = ISpanParsable<System::Decimal>::TryParse;
public static bool TryParse(ReadOnlySpan<char> s, IFormatProvider? provider, out decimal result);
static member TryParse : ReadOnlySpan<char> * IFormatProvider * decimal -> bool
Public Shared Function TryParse (s As ReadOnlySpan(Of Char), provider As IFormatProvider, ByRef result As Decimal) As Boolean
Parametrar
- s
- ReadOnlySpan<Char>
Det intervall med tecken som ska parsas.
- provider
- IFormatProvider
Ett objekt som tillhandahåller kulturspecifik formateringsinformation om s.
- result
- Decimal
När den här metoden returneras innehåller resultatet av parsning seller ett odefinierat värde vid fel.
Returer
trueom s har parsats, annars . false
Gäller för
TryParse(String, IFormatProvider, Decimal)
- Källa:
- Decimal.cs
- Källa:
- Decimal.cs
- Källa:
- Decimal.cs
- Källa:
- Decimal.cs
- Källa:
- Decimal.cs
Försöker parsa en sträng till ett värde.
public:
static bool TryParse(System::String ^ s, IFormatProvider ^ provider, [Runtime::InteropServices::Out] System::Decimal % result) = IParsable<System::Decimal>::TryParse;
public static bool TryParse(string? s, IFormatProvider? provider, out decimal result);
static member TryParse : string * IFormatProvider * decimal -> bool
Public Shared Function TryParse (s As String, provider As IFormatProvider, ByRef result As Decimal) As Boolean
Parametrar
- s
- String
Strängen som ska parsas.
- provider
- IFormatProvider
Ett objekt som tillhandahåller kulturspecifik formateringsinformation om s.
- result
- Decimal
När den här metoden returneras innehåller resultatet av parsning s eller ett odefinierat värde vid fel.
Returer
trueom s har parsats, annars . false
Gäller för
TryParse(ReadOnlySpan<Byte>, NumberStyles, IFormatProvider, Decimal)
- Källa:
- Decimal.cs
- Källa:
- Decimal.cs
- Källa:
- Decimal.cs
- Källa:
- Decimal.cs
Försöker parsa ett intervall med UTF-8 tecken till ett värde.
public:
static bool TryParse(ReadOnlySpan<System::Byte> utf8Text, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] System::Decimal % result) = System::Numerics::INumberBase<System::Decimal>::TryParse;
public static bool TryParse(ReadOnlySpan<byte> utf8Text, System.Globalization.NumberStyles style, IFormatProvider? provider, out decimal result);
static member TryParse : ReadOnlySpan<byte> * System.Globalization.NumberStyles * IFormatProvider * decimal -> bool
Public Shared Function TryParse (utf8Text As ReadOnlySpan(Of Byte), style As NumberStyles, provider As IFormatProvider, ByRef result As Decimal) As Boolean
Parametrar
- utf8Text
- ReadOnlySpan<Byte>
Intervallet för UTF-8 tecken att parsa.
- style
- NumberStyles
En bitvis kombination av talformat som kan finnas i utf8Text.
- provider
- IFormatProvider
Ett objekt som tillhandahåller kulturspecifik formateringsinformation om utf8Text.
- result
- Decimal
Vid retur innehåller resultatet av parsning utf8Text eller ett odefinierat värde vid fel.
Returer
trueom utf8Text har parsats, annars . false
Gäller för
TryParse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider, Decimal)
- Källa:
- Decimal.cs
- Källa:
- Decimal.cs
- Källa:
- Decimal.cs
- Källa:
- Decimal.cs
- Källa:
- Decimal.cs
Konverterar spännviddsrepresentationen av ett tal till dess Decimal motsvarighet med det angivna formatet och det kulturspecifika formatet. Ett returvärde anger om konverteringen lyckades eller misslyckades.
public:
static bool TryParse(ReadOnlySpan<char> s, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] System::Decimal % result) = System::Numerics::INumberBase<System::Decimal>::TryParse;
public:
static bool TryParse(ReadOnlySpan<char> s, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] System::Decimal % result);
public static bool TryParse(ReadOnlySpan<char> s, System.Globalization.NumberStyles style, IFormatProvider? provider, out decimal result);
public static bool TryParse(ReadOnlySpan<char> s, System.Globalization.NumberStyles style, IFormatProvider provider, out decimal result);
static member TryParse : ReadOnlySpan<char> * System.Globalization.NumberStyles * IFormatProvider * decimal -> bool
Public Shared Function TryParse (s As ReadOnlySpan(Of Char), style As NumberStyles, provider As IFormatProvider, ByRef result As Decimal) As Boolean
Parametrar
- s
- ReadOnlySpan<Char>
Ett intervall som innehåller de tecken som representerar talet som ska konverteras.
- style
- NumberStyles
En bitvis kombination av uppräkningsvärden som anger det tillåtna formatet för s. Ett typiskt värde att ange är Number.
- provider
- IFormatProvider
Ett objekt som tillhandahåller kulturspecifik parsningsinformation om s.
- result
- Decimal
När den här metoden returneras innehåller det Decimal tal som motsvarar det numeriska värdet i s, om konverteringen lyckades eller noll om konverteringen misslyckades. Konverteringen misslyckas om parametern s är null eller Empty, inte är ett tal i ett format som är kompatibelt med style, eller representerar ett tal som är mindre än Decimal.MinValue eller större än Decimal.MaxValue. Den här parametern skickas uininitialiserad; alla värden som ursprungligen angavs i result skrivs över.
Returer
true om s har konverterats, annars false.
Gäller för
TryParse(String, NumberStyles, IFormatProvider, Decimal)
- Källa:
- Decimal.cs
- Källa:
- Decimal.cs
- Källa:
- Decimal.cs
- Källa:
- Decimal.cs
- Källa:
- Decimal.cs
Konverterar strängrepresentationen av ett tal till dess Decimal motsvarighet med det angivna formatet och det kulturspecifika formatet. Ett returvärde anger om konverteringen lyckades eller misslyckades.
public:
static bool TryParse(System::String ^ s, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] System::Decimal % result);
public:
static bool TryParse(System::String ^ s, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] System::Decimal % result) = System::Numerics::INumberBase<System::Decimal>::TryParse;
public static bool TryParse(string s, System.Globalization.NumberStyles style, IFormatProvider provider, out decimal result);
public static bool TryParse(string? s, System.Globalization.NumberStyles style, IFormatProvider? provider, out decimal result);
static member TryParse : string * System.Globalization.NumberStyles * IFormatProvider * decimal -> bool
Public Shared Function TryParse (s As String, style As NumberStyles, provider As IFormatProvider, ByRef result As Decimal) As Boolean
Parametrar
- s
- String
Strängrepresentationen av talet som ska konverteras.
- style
- NumberStyles
En bitvis kombination av uppräkningsvärden som anger det tillåtna formatet för s. Ett typiskt värde att ange är Number.
- provider
- IFormatProvider
Ett objekt som tillhandahåller kulturspecifik parsningsinformation om s.
- result
- Decimal
När den här metoden returneras innehåller det Decimal tal som motsvarar det numeriska värdet i s, om konverteringen lyckades eller noll om konverteringen misslyckades. Konverteringen misslyckas om parametern s är null eller Empty, inte är ett tal i ett format som är kompatibelt med style, eller representerar ett tal som är mindre än Decimal.MinValue eller större än Decimal.MaxValue. Den här parametern skickas uininitialiserad; alla värden som ursprungligen angavs i result skrivs över.
Returer
true om s har konverterats, annars false.
Undantag
Exempel
I följande exempel visas hur metoden används TryParse(String, NumberStyles, IFormatProvider, Decimal) för att parsa strängrepresentationen av ett tal som har ett visst format och formateras med hjälp av konventionerna i en viss kultur.
string value;
NumberStyles style;
CultureInfo culture;
decimal number;
// Parse currency value using en-GB culture.
value = "£1,097.63";
style = NumberStyles.Number | NumberStyles.AllowCurrencySymbol;
culture = CultureInfo.CreateSpecificCulture("en-GB");
if (Decimal.TryParse(value, style, culture, out number))
Console.WriteLine("Converted '{0}' to {1}.", value, number);
else
Console.WriteLine("Unable to convert '{0}'.", value);
// Displays:
// Converted '£1,097.63' to 1097.63.
value = "1345,978";
style = NumberStyles.AllowDecimalPoint;
culture = CultureInfo.CreateSpecificCulture("fr-FR");
if (Decimal.TryParse(value, style, culture, out number))
Console.WriteLine("Converted '{0}' to {1}.", value, number);
else
Console.WriteLine("Unable to convert '{0}'.", value);
// Displays:
// Converted '1345,978' to 1345.978.
value = "1.345,978";
style = NumberStyles.AllowDecimalPoint | NumberStyles.AllowThousands;
culture = CultureInfo.CreateSpecificCulture("es-ES");
if (Decimal.TryParse(value, style, culture, out number))
Console.WriteLine("Converted '{0}' to {1}.", value, number);
else
Console.WriteLine("Unable to convert '{0}'.", value);
// Displays:
// Converted '1.345,978' to 1345.978.
value = "1 345,978";
if (Decimal.TryParse(value, style, culture, out number))
Console.WriteLine("Converted '{0}' to {1}.", value, number);
else
Console.WriteLine("Unable to convert '{0}'.", value);
// Displays:
// Unable to convert '1 345,978'.
// Parse currency value using en-GB culture.
let value = "£1,097.63"
let style = NumberStyles.Number ||| NumberStyles.AllowCurrencySymbol
let culture = CultureInfo.CreateSpecificCulture "en-GB"
match Decimal.TryParse(value, style, culture) with
| true, number ->
printfn $"Converted '{value}' to {number}."
| _ ->
printfn $"Unable to convert '{value}'."
// Displays:
// Converted '£1,097.63' to 1097.63.
let value = "1345,978"
let style = NumberStyles.AllowDecimalPoint
let culture = CultureInfo.CreateSpecificCulture "fr-FR"
match Decimal.TryParse(value, style, culture) with
| true, number ->
printfn $"Converted '{value}' to {number}."
| _ ->
printfn $"Unable to convert '{value}'."
// Displays:
// Converted '1345,978' to 1345.978.
let value = "1.345,978"
let style = NumberStyles.AllowDecimalPoint ||| NumberStyles.AllowThousands
let culture = CultureInfo.CreateSpecificCulture "es-ES"
match Decimal.TryParse(value, style, culture) with
| true, number ->
printfn $"Converted '{value}' to {number}."
| _ ->
printfn $"Unable to convert '{value}'."
// Displays:
// Converted '1.345,978' to 1345.978.
let value = "1 345,978"
match Decimal.TryParse(value, style, culture) with
| true, number ->
printfn $"Converted '{value}' to {number}."
| _ ->
printfn $"Unable to convert '{value}'."
// Displays:
// Unable to convert '1 345,978'.
Dim value As String
Dim style As NumberStyles
Dim culture As CultureInfo
Dim number As Decimal
' Parse currency value using en-GB culture.
value = "£1,097.63"
style = NumberStyles.Number Or NumberStyles.AllowCurrencySymbol
culture = CultureInfo.CreateSpecificCulture("en-GB")
If Decimal.TryParse(value, style, culture, number) Then
Console.WriteLine("Converted '{0}' to {1}.", value, number)
Else
Console.WriteLine("Unable to convert '{0}'.", value)
End If
' Displays:
' Converted '£1,097.63' to 1097.63.
value = "1345,978"
style = NumberStyles.AllowDecimalPoint
culture = CultureInfo.CreateSpecificCulture("fr-FR")
If Decimal.TryParse(value, style, culture, number) Then
Console.WriteLine("Converted '{0}' to {1}.", value, number)
Else
Console.WriteLine("Unable to convert '{0}'.", value)
End If
' Displays:
' Converted '1345,978' to 1345.978.
value = "1.345,978"
style = NumberStyles.AllowDecimalPoint Or NumberStyles.AllowThousands
culture = CultureInfo.CreateSpecificCulture("es-ES")
If Decimal.TryParse(value, style, culture, number) Then
Console.WriteLine("Converted '{0}' to {1}.", value, number)
Else
Console.WriteLine("Unable to convert '{0}'.", value)
End If
' Displays:
' Converted '1.345,978' to 1345.978.
value = "1 345,978"
If Decimal.TryParse(value, style, culture, number) Then
Console.WriteLine("Converted '{0}' to {1}.", value, number)
Else
Console.WriteLine("Unable to convert '{0}'.", value)
End If
' Displays:
' Unable to convert '1 345,978'.
Kommentarer
Den här överlagringen Decimal.Parse(String, NumberStyles, IFormatProvider) skiljer sig från metoden genom att returnera ett booleskt värde som anger om parsningsåtgärden lyckades i stället för att returnera det parsade numeriska värdet. Det eliminerar behovet av att använda undantagshantering för att testa för en FormatException i händelse av att s den är ogiltig och inte kan parsas.
Parametern style definierar det tillåtna formatet för parametern s för att parsningsåtgärden ska lyckas. Det måste vara en kombination av bitflaggor från NumberStyles uppräkningen. Följande NumberStyles medlemmar stöds inte:
Beroende på värdet för formatmallen kan parametern s innehålla följande element:
[ws][$][sign][digits,]digits[.fractional-digits][e[sign]digits][ws]
Element inom hakparenteser ([ och ]) är valfria. I följande tabell beskrivs varje element.
| Element | Description |
|---|---|
| Ws | Valfritt blanksteg. Tomt utrymme kan visas i början av s om style innehåller NumberStyles.AllowLeadingWhite flaggan. Den kan visas i slutet av s om style den NumberStyles.AllowTrailingWhite innehåller flaggan. |
| $ | En kulturspecifik valutasymbol. Dess position i strängen definieras av NumberFormatInfo.CurrencyNegativePattern egenskaperna eller NumberFormatInfo.CurrencyPositivePattern för objektet som NumberFormatInfo returneras av IFormatProvider.GetFormat parametermetoden provider . Valutasymbolen kan visas i s om style den NumberStyles.AllowCurrencySymbol innehåller flaggan. |
| signera | Ett valfritt tecken. |
| Siffror | En sekvens med siffror mellan 0 och 9. |
| . | Ett kulturspecifikt decimaltecken. |
| fractional-digits | En sekvens med siffror mellan 0 och 9. |
Parametern style anger parameterns tillåtna format s och kan vara en eller flera NumberStyles uppräknade konstanter som kombineras med en bitvis OR-åtgärd. Om style är null s tolkas det med formatet NumberStyles.Number .
Parametern provider är en IFormatProvider implementering, till exempel ett objekt eller NumberFormatInfo ett CultureInfo objekt. Parametern provider tillhandahåller kulturspecifik information som används vid parsning. Om provider är nullanvänds den aktuella trådkulturen.
Ett Decimal objekt har 29 siffror med precision. Om s representerar ett tal som har fler än 29 siffror, men har en bråkdelsdel och ligger inom intervallet MaxValue för och MinValue, avrundas talet, inte trunkeras, till 29 siffror med avrundning till närmaste.
Om en avgränsare påträffas i parametern s under en parsningsåtgärd och tillämpliga decimaler för valuta eller tal och gruppavgränsare är desamma, förutsätter parsningsåtgärden att avgränsaren är en decimalavgränsare i stället för en gruppavgränsare. Mer information om avgränsare finns i CurrencyDecimalSeparator, NumberDecimalSeparator, CurrencyGroupSeparatoroch NumberGroupSeparator.