Int32.TryParse Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Converteert de tekenreeksweergave van een getal naar het equivalent van het 32-bits ondertekende gehele getal. Een retourwaarde geeft aan of de bewerking is geslaagd.
Overloads
| Name | Description |
|---|---|
| TryParse(String, IFormatProvider, Int32) |
Probeert een tekenreeks te parseren in een waarde. |
| TryParse(ReadOnlySpan<Char>, Int32) |
Converteert de spanweergave van een getal in een cultuurspecifieke indeling naar het equivalent van het 32-bits ondertekende gehele getal. Een retourwaarde geeft aan of de conversie is geslaagd. |
| TryParse(String, Int32) |
Converteert de tekenreeksweergave van een getal naar het equivalent van het 32-bits ondertekende gehele getal. Een retourwaarde geeft aan of de conversie is geslaagd. |
| TryParse(ReadOnlySpan<Byte>, IFormatProvider, Int32) |
Probeert een reeks UTF-8 tekens te parseren in een waarde. |
| TryParse(ReadOnlySpan<Char>, IFormatProvider, Int32) |
Probeert een reeks tekens te parseren in een waarde. |
| TryParse(ReadOnlySpan<Byte>, NumberStyles, IFormatProvider, Int32) |
Probeert een reeks UTF-8 tekens te parseren in een waarde. |
| TryParse(ReadOnlySpan<Byte>, Int32) |
Hiermee wordt geprobeerd een UTF-8-tekenbereik te converteren dat de tekenreeksweergave van een getal bevat naar het equivalent van het 32-bits ondertekende gehele getal. |
| TryParse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider, Int32) |
Converteert de spanweergave van een getal in een opgegeven stijl en cultuurspecifieke notatie naar het equivalent van het 32-bits ondertekende gehele getal. Een retourwaarde geeft aan of de conversie is geslaagd. |
| TryParse(String, NumberStyles, IFormatProvider, Int32) |
Converteert de tekenreeksweergave van een getal in een opgegeven stijl en cultuurspecifieke notatie naar het equivalent van het 32-bits ondertekende gehele getal. Een retourwaarde geeft aan of de conversie is geslaagd. |
TryParse(String, IFormatProvider, Int32)
- Bron:
- Int32.cs
- Bron:
- Int32.cs
- Bron:
- Int32.cs
- Bron:
- Int32.cs
- Bron:
- Int32.cs
Probeert een tekenreeks te parseren in een waarde.
public:
static bool TryParse(System::String ^ s, IFormatProvider ^ provider, [Runtime::InteropServices::Out] int % result) = IParsable<int>::TryParse;
public static bool TryParse(string? s, IFormatProvider? provider, out int result);
static member TryParse : string * IFormatProvider * int -> bool
Public Shared Function TryParse (s As String, provider As IFormatProvider, ByRef result As Integer) As Boolean
Parameters
- s
- String
De tekenreeks die moet worden geparseerd.
- provider
- IFormatProvider
Een object dat cultuurspecifieke opmaakinformatie biedt over s.
- result
- Int32
Wanneer deze methode wordt geretourneerd, bevat dit het resultaat van het parseren s of van een niet-gedefinieerde waarde bij een fout.
Retouren
trueindien s geparseerd; anders. false
Van toepassing op
TryParse(ReadOnlySpan<Char>, Int32)
- Bron:
- Int32.cs
- Bron:
- Int32.cs
- Bron:
- Int32.cs
- Bron:
- Int32.cs
- Bron:
- Int32.cs
Converteert de spanweergave van een getal in een cultuurspecifieke indeling naar het equivalent van het 32-bits ondertekende gehele getal. Een retourwaarde geeft aan of de conversie is geslaagd.
public:
static bool TryParse(ReadOnlySpan<char> s, [Runtime::InteropServices::Out] int % result);
public static bool TryParse(ReadOnlySpan<char> s, out int result);
static member TryParse : ReadOnlySpan<char> * int -> bool
Public Shared Function TryParse (s As ReadOnlySpan(Of Char), ByRef result As Integer) As Boolean
Parameters
- s
- ReadOnlySpan<Char>
Een bereik met de tekens die het getal vertegenwoordigen dat moet worden geconverteerd.
- result
- Int32
Wanneer deze methode retourneert, bevat het 32-bits geheel getal dat gelijk is aan het getal in s, als de conversie is geslaagd of nul als de conversie is mislukt. De conversie mislukt als de s parameter een getal kleiner is null dan EmptyInt32.MinValue of groter is dan Int32.MaxValue. Deze parameter wordt niet-geïnitialiseerd doorgegeven; elke waarde die oorspronkelijk is opgegeven result , wordt overschreven.
Retouren
trueals s deze is geconverteerd; anders. false
Van toepassing op
TryParse(String, Int32)
- Bron:
- Int32.cs
- Bron:
- Int32.cs
- Bron:
- Int32.cs
- Bron:
- Int32.cs
- Bron:
- Int32.cs
Converteert de tekenreeksweergave van een getal naar het equivalent van het 32-bits ondertekende gehele getal. Een retourwaarde geeft aan of de conversie is geslaagd.
public:
static bool TryParse(System::String ^ s, [Runtime::InteropServices::Out] int % result);
public static bool TryParse(string s, out int result);
public static bool TryParse(string? s, out int result);
static member TryParse : string * int -> bool
Public Shared Function TryParse (s As String, ByRef result As Integer) As Boolean
Parameters
- s
- String
Een tekenreeks die een getal bevat dat moet worden geconverteerd.
- result
- Int32
Wanneer deze methode retourneert, bevat het 32-bits geheel getal dat gelijk is aan het getal in s, als de conversie is geslaagd of nul als de conversie is mislukt. De conversie mislukt als de s parameter de juiste indeling heeft null of Emptyeen getal kleiner is dan Int32.MinValue of groter is dan Int32.MaxValue. Deze parameter wordt niet-geïnitialiseerd doorgegeven; elke waarde die oorspronkelijk is opgegeven result , wordt overschreven.
Retouren
trueals s deze is geconverteerd; anders. false
Voorbeelden
In het volgende voorbeeld wordt de Int32.TryParse(String, Int32) methode aangeroepen met een aantal verschillende tekenreekswaarden.
using System;
public class Example
{
public static void Main()
{
string[] values = { null, "160519", "9432.0", "16,667",
" -322 ", "+4302", "(100);", "01FA" };
foreach (var value in values)
{
int number;
bool success = int.TryParse(value, out number);
if (success)
{
Console.WriteLine($"Converted '{value}' to {number}.");
}
else
{
Console.WriteLine($"Attempted conversion of '{value ?? "<null>"}' failed.");
}
}
}
}
// The example displays the following output:
// Attempted conversion of '<null>' failed.
// Converted '160519' to 160519.
// Attempted conversion of '9432.0' failed.
// Attempted conversion of '16,667' failed.
// Converted ' -322 ' to -322.
// Converted '+4302' to 4302.
// Attempted conversion of '(100);' failed.
// Attempted conversion of '01FA' failed.
open System
let values =
[ null; "160519"; "9432.0"; "16,667"
" -322 "; "+4302"; "(100);"; "01FA" ]
for value in values do
match Int32.TryParse value with
| true, number ->
printfn $"Converted '{value}' to {number}."
| _ ->
printfn $"""Attempted conversion of '{if isNull value then "<null>" else value}' failed."""
// The example displays the following output:
// Attempted conversion of '<null>' failed.
// Converted '160519' to 160519.
// Attempted conversion of '9432.0' failed.
// Attempted conversion of '16,667' failed.
// Converted ' -322 ' to -322.
// Converted '+4302' to 4302.
// Attempted conversion of '(100);' failed.
// Attempted conversion of '01FA' failed.
Module Example
Public Sub Main()
Dim values() As String = { Nothing, "160519", "9432.0", "16,667",
" -322 ", "+4302", "(100);",
"01FA" }
For Each value In values
Dim number As Integer
Dim success As Boolean = Int32.TryParse(value, number)
If success Then
Console.WriteLine("Converted '{0}' to {1}.", value, number)
Else
Console.WriteLine("Attempted conversion of '{0}' failed.",
If(value ,"<null>"))
End If
Next
End Sub
End Module
' The example displays the following output to the console:
' Attempted conversion of '<null>' failed.
' Converted '160519' to 160519.
' Attempted conversion of '9432.0' failed.
' Attempted conversion of '16,667' failed.
' Converted ' -322 ' to -322.
' Converted '+4302' to 4302.
' Attempted conversion of '(100)' failed.
' Attempted conversion of '01FA' failed.
Enkele tekenreeksen die de TryParse(String, Int32) methode in dit voorbeeld niet kan converteren, zijn:
"9432.0". De conversie mislukt omdat de tekenreeks geen decimaalteken kan bevatten; het mag alleen integrale cijfers bevatten.
"16,667". De conversie mislukt omdat de tekenreeks geen groepsscheidingstekens kan bevatten; het mag alleen integrale cijfers bevatten.
"(100)". De conversie mislukt omdat de tekenreeks geen ander teken mag bevatten dan het teken dat is gedefinieerd door de huidige cultuur NumberFormatInfo.NegativeSign en NumberFormatInfo.NumberNegativePattern eigenschappen.
"01FA". De conversie mislukt omdat de tekenreeks geen hexadecimale cijfers kan bevatten; het mag alleen decimale cijfers bevatten.
Opmerkingen
De TryParse methode lijkt op de Parse methode, behalve dat de TryParse methode geen uitzondering genereert als de conversie mislukt. Het elimineert de noodzaak om uitzonderingsafhandeling te gebruiken om te testen op een FormatException in het geval dat s ongeldig is en niet kan worden geparseerd.
De s parameter bevat een getal van het formulier:
[ws][sign]digits[ws]
Items in vierkante haken ([ en ]) zijn optioneel. In de volgende tabel wordt elk element beschreven.
| Element | Beschrijving |
|---|---|
| Ws | Optionele witruimte. |
| ondertekenen | Een optioneel teken. |
| Cijfers | Een reeks cijfers tussen 0 en 9. |
De s parameter wordt geïnterpreteerd met behulp van de NumberStyles.Integer stijl. Naast de decimale cijfers zijn alleen voorloop- en volgspaties met een voorloopteken toegestaan. Als u de stijlelementen expliciet wilt definiëren in combinatie met de cultuurspecifieke opmaakinformatie die aanwezig kan zijn s, gebruikt u de Int32.TryParse(String, NumberStyles, IFormatProvider, Int32) methode.
De s parameter wordt geparseerd met behulp van de opmaakgegevens in een NumberFormatInfo object dat is geïnitialiseerd voor de huidige systeemcultuur. Zie CurrentInfo voor meer informatie.
Deze overbelasting van de TryParse methode interpreteert alle cijfers in de s parameter als decimale cijfers. Als u de tekenreeksweergave van een hexadecimaal getal wilt parseren, roept u de Int32.TryParse(String, NumberStyles, IFormatProvider, Int32) overbelasting aan.
Zie ook
- Parse(String)
- ToString()
- Parsing Numerieke tekenreeksen in .NET
- Voorbeeld: .NET Core WinForms Format Utility (C#)
- Voorbeeld: .NET Core WinForms Format Utility (Visual Basic)
Van toepassing op
TryParse(ReadOnlySpan<Byte>, IFormatProvider, Int32)
- Bron:
- Int32.cs
- Bron:
- Int32.cs
- Bron:
- Int32.cs
- Bron:
- Int32.cs
Probeert een reeks UTF-8 tekens te parseren in een waarde.
public:
static bool TryParse(ReadOnlySpan<System::Byte> utf8Text, IFormatProvider ^ provider, [Runtime::InteropServices::Out] int % result) = IUtf8SpanParsable<int>::TryParse;
public static bool TryParse(ReadOnlySpan<byte> utf8Text, IFormatProvider? provider, out int result);
static member TryParse : ReadOnlySpan<byte> * IFormatProvider * int -> bool
Public Shared Function TryParse (utf8Text As ReadOnlySpan(Of Byte), provider As IFormatProvider, ByRef result As Integer) As Boolean
Parameters
- utf8Text
- ReadOnlySpan<Byte>
Het bereik van UTF-8 tekens om te parseren.
- provider
- IFormatProvider
Een object dat cultuurspecifieke opmaakinformatie biedt over utf8Text.
- result
- Int32
Bij retour bevat het resultaat van het parseren utf8Text of een niet-gedefinieerde waarde bij een fout.
Retouren
trueindien utf8Text geparseerd; anders. false
Van toepassing op
TryParse(ReadOnlySpan<Char>, IFormatProvider, Int32)
- Bron:
- Int32.cs
- Bron:
- Int32.cs
- Bron:
- Int32.cs
- Bron:
- Int32.cs
- Bron:
- Int32.cs
Probeert een reeks tekens te parseren in een waarde.
public:
static bool TryParse(ReadOnlySpan<char> s, IFormatProvider ^ provider, [Runtime::InteropServices::Out] int % result) = ISpanParsable<int>::TryParse;
public static bool TryParse(ReadOnlySpan<char> s, IFormatProvider? provider, out int result);
static member TryParse : ReadOnlySpan<char> * IFormatProvider * int -> bool
Public Shared Function TryParse (s As ReadOnlySpan(Of Char), provider As IFormatProvider, ByRef result As Integer) As Boolean
Parameters
- s
- ReadOnlySpan<Char>
De reeks tekens die moeten worden geparseerd.
- provider
- IFormatProvider
Een object dat cultuurspecifieke opmaakinformatie biedt over s.
- result
- Int32
Wanneer deze methode wordt geretourneerd, bevat het resultaat van het parseren sof een niet-gedefinieerde waarde bij een fout.
Retouren
trueindien s geparseerd; anders. false
Van toepassing op
TryParse(ReadOnlySpan<Byte>, NumberStyles, IFormatProvider, Int32)
- Bron:
- Int32.cs
- Bron:
- Int32.cs
- Bron:
- Int32.cs
- Bron:
- Int32.cs
Probeert een reeks UTF-8 tekens te parseren in een waarde.
public:
static bool TryParse(ReadOnlySpan<System::Byte> utf8Text, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] int % result) = System::Numerics::INumberBase<int>::TryParse;
public static bool TryParse(ReadOnlySpan<byte> utf8Text, System.Globalization.NumberStyles style, IFormatProvider? provider, out int result);
static member TryParse : ReadOnlySpan<byte> * System.Globalization.NumberStyles * IFormatProvider * int -> bool
Public Shared Function TryParse (utf8Text As ReadOnlySpan(Of Byte), style As NumberStyles, provider As IFormatProvider, ByRef result As Integer) As Boolean
Parameters
- utf8Text
- ReadOnlySpan<Byte>
Het bereik van UTF-8 tekens om te parseren.
- style
- NumberStyles
Een bitsgewijze combinatie van getalstijlen die aanwezig kunnen zijn in utf8Text.
- provider
- IFormatProvider
Een object dat cultuurspecifieke opmaakinformatie biedt over utf8Text.
- result
- Int32
Bij retour bevat het resultaat van het parseren utf8Text of een niet-gedefinieerde waarde bij een fout.
Retouren
trueindien utf8Text geparseerd; anders. false
Van toepassing op
TryParse(ReadOnlySpan<Byte>, Int32)
- Bron:
- Int32.cs
- Bron:
- Int32.cs
- Bron:
- Int32.cs
- Bron:
- Int32.cs
Hiermee wordt geprobeerd een UTF-8-tekenbereik te converteren dat de tekenreeksweergave van een getal bevat naar het equivalent van het 32-bits ondertekende gehele getal.
public:
static bool TryParse(ReadOnlySpan<System::Byte> utf8Text, [Runtime::InteropServices::Out] int % result);
public static bool TryParse(ReadOnlySpan<byte> utf8Text, out int result);
static member TryParse : ReadOnlySpan<byte> * int -> bool
Public Shared Function TryParse (utf8Text As ReadOnlySpan(Of Byte), ByRef result As Integer) As Boolean
Parameters
- utf8Text
- ReadOnlySpan<Byte>
Een bereik met de UTF-8 tekens die het getal vertegenwoordigen dat moet worden geconverteerd.
- result
- Int32
Wanneer deze methode wordt geretourneerd, bevat deze de 32-bits geheel getalwaarde die gelijk is aan het getal dat utf8Text is opgenomen als de conversie is geslaagd of nul als de conversie is mislukt. Deze parameter wordt niet-geïnitialiseerd doorgegeven; elke waarde die oorspronkelijk is opgegeven in het resultaat, wordt overschreven.
Retouren
trueals utf8Text deze is geconverteerd; anders. false
Van toepassing op
TryParse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider, Int32)
- Bron:
- Int32.cs
- Bron:
- Int32.cs
- Bron:
- Int32.cs
- Bron:
- Int32.cs
- Bron:
- Int32.cs
Converteert de spanweergave van een getal in een opgegeven stijl en cultuurspecifieke notatie naar het equivalent van het 32-bits ondertekende gehele getal. Een retourwaarde geeft aan of de conversie is geslaagd.
public:
static bool TryParse(ReadOnlySpan<char> s, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] int % result) = System::Numerics::INumberBase<int>::TryParse;
public:
static bool TryParse(ReadOnlySpan<char> s, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] int % result);
public static bool TryParse(ReadOnlySpan<char> s, System.Globalization.NumberStyles style, IFormatProvider? provider, out int result);
public static bool TryParse(ReadOnlySpan<char> s, System.Globalization.NumberStyles style, IFormatProvider provider, out int result);
static member TryParse : ReadOnlySpan<char> * System.Globalization.NumberStyles * IFormatProvider * int -> bool
Public Shared Function TryParse (s As ReadOnlySpan(Of Char), style As NumberStyles, provider As IFormatProvider, ByRef result As Integer) As Boolean
Parameters
- s
- ReadOnlySpan<Char>
Een bereik met de tekens die het getal vertegenwoordigen dat moet worden geconverteerd. De periode wordt geïnterpreteerd met behulp van de stijl die is opgegeven door style.
- style
- NumberStyles
Een bitsgewijze combinatie van opsommingswaarden die de stijlelementen aangeeft die aanwezig kunnen zijn in s. Een typische waarde die moet worden opgegeven, is Integer.
- provider
- IFormatProvider
Een object dat cultuurspecifieke opmaakinformatie over slevert.
- result
- Int32
Wanneer deze methode retourneert, bevat het 32-bits geheel getal dat gelijk is aan het getal in s, als de conversie is geslaagd of nul als de conversie is mislukt. De conversie mislukt als de s parameter wel of nullniet in een indeling Emptyvoldoet aan of een getal vertegenwoordigt dat kleiner is style dan Int32.MinValue of groter is dan Int32.MaxValue. Deze parameter wordt niet-geïnitialiseerd doorgegeven; elke waarde die oorspronkelijk is opgegeven result , wordt overschreven.
Retouren
trueals s deze is geconverteerd; anders. false
Van toepassing op
TryParse(String, NumberStyles, IFormatProvider, Int32)
- Bron:
- Int32.cs
- Bron:
- Int32.cs
- Bron:
- Int32.cs
- Bron:
- Int32.cs
- Bron:
- Int32.cs
Converteert de tekenreeksweergave van een getal in een opgegeven stijl en cultuurspecifieke notatie naar het equivalent van het 32-bits ondertekende gehele getal. Een retourwaarde geeft aan of de conversie is geslaagd.
public:
static bool TryParse(System::String ^ s, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] int % result);
public:
static bool TryParse(System::String ^ s, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] int % result) = System::Numerics::INumberBase<int>::TryParse;
public static bool TryParse(string s, System.Globalization.NumberStyles style, IFormatProvider provider, out int result);
public static bool TryParse(string? s, System.Globalization.NumberStyles style, IFormatProvider? provider, out int result);
static member TryParse : string * System.Globalization.NumberStyles * IFormatProvider * int -> bool
Public Shared Function TryParse (s As String, style As NumberStyles, provider As IFormatProvider, ByRef result As Integer) As Boolean
Parameters
- s
- String
Een tekenreeks die een getal bevat dat moet worden geconverteerd. De tekenreeks wordt geïnterpreteerd met behulp van de stijl die is opgegeven door style.
- style
- NumberStyles
Een bitsgewijze combinatie van opsommingswaarden die de stijlelementen aangeeft die aanwezig kunnen zijn in s. Een typische waarde die moet worden opgegeven, is Integer.
- provider
- IFormatProvider
Een object dat cultuurspecifieke opmaakinformatie over slevert.
- result
- Int32
Wanneer deze methode retourneert, bevat het 32-bits geheel getal dat gelijk is aan het getal in s, als de conversie is geslaagd of nul als de conversie is mislukt. De conversie mislukt als de s parameter wel of nullniet in een indeling Emptyvoldoet aan of een getal vertegenwoordigt dat kleiner is style dan Int32.MinValue of groter is dan Int32.MaxValue. Deze parameter wordt niet-geïnitialiseerd doorgegeven; elke waarde die oorspronkelijk is opgegeven result , wordt overschreven.
Retouren
trueals s deze is geconverteerd; anders. false
Uitzonderingen
style is geen NumberStyles waarde.
– of –
style is geen combinatie van AllowHexSpecifier en HexNumber waarden.
Voorbeelden
In het volgende voorbeeld wordt de Int32.TryParse(String, NumberStyles, IFormatProvider, Int32) methode aangeroepen met een aantal verschillende tekenreeksen en NumberStyles waarden.
using System;
using System.Globalization;
public class StringParsing
{
public static void Main()
{
string numericString;
NumberStyles styles;
numericString = "106779";
styles = NumberStyles.Integer;
CallTryParse(numericString, styles);
numericString = "-30677";
styles = NumberStyles.None;
CallTryParse(numericString, styles);
styles = NumberStyles.AllowLeadingSign;
CallTryParse(numericString, styles);
numericString = "301677-";
CallTryParse(numericString, styles);
styles = styles | NumberStyles.AllowTrailingSign;
CallTryParse(numericString, styles);
numericString = "$10634";
styles = NumberStyles.Integer;
CallTryParse(numericString, styles);
styles = NumberStyles.Integer | NumberStyles.AllowCurrencySymbol;
CallTryParse(numericString, styles);
numericString = "10345.00";
styles = NumberStyles.Integer | NumberStyles.AllowDecimalPoint;
CallTryParse(numericString, styles);
numericString = "10345.72";
styles = NumberStyles.Integer | NumberStyles.AllowDecimalPoint;
CallTryParse(numericString, styles);
numericString = "22,593";
styles = NumberStyles.Integer | NumberStyles.AllowThousands;
CallTryParse(numericString, styles);
numericString = "12E-01";
styles = NumberStyles.Integer | NumberStyles.AllowExponent;
CallTryParse(numericString, styles);
numericString = "12E03";
CallTryParse(numericString, styles);
numericString = "80c1";
CallTryParse(numericString, NumberStyles.HexNumber);
numericString = "0x80C1";
CallTryParse(numericString, NumberStyles.HexNumber);
}
private static void CallTryParse(string stringToConvert, NumberStyles styles)
{
CultureInfo provider;
// If currency symbol is allowed, use en-US culture.
if ((styles & NumberStyles.AllowCurrencySymbol) > 0)
provider = new CultureInfo("en-US");
else
provider = CultureInfo.InvariantCulture;
bool success = int.TryParse(stringToConvert, styles,
provider, out int number);
if (success)
Console.WriteLine($"Converted '{stringToConvert}' to {number}.");
else
Console.WriteLine($"Attempted conversion of '{stringToConvert}' failed.");
}
}
// The example displays the following output to the console:
// Converted '106779' to 106779.
// Attempted conversion of '-30677' failed.
// Converted '-30677' to -30677.
// Attempted conversion of '301677-' failed.
// Converted '301677-' to -301677.
// Attempted conversion of '$10634' failed.
// Converted '$10634' to 10634.
// Converted '10345.00' to 10345.
// Attempted conversion of '10345.72' failed.
// Converted '22,593' to 22593.
// Attempted conversion of '12E-01' failed.
// Converted '12E03' to 12000.
// Converted '80c1' to 32961.
// Attempted conversion of '0x80C1' failed.
open System
open System.Globalization
let callTryParse (stringToConvert: string) styles =
let provider =
// If currency symbol is allowed, use en-US culture.
if int (styles &&& NumberStyles.AllowCurrencySymbol) > 0 then
CultureInfo "en-US"
else
CultureInfo.InvariantCulture
match Int32.TryParse(stringToConvert, styles, provider) with
| true, number ->
printfn $"Converted '{stringToConvert}' to {number}."
| _ ->
printfn $"Attempted conversion of '{stringToConvert}' failed."
[<EntryPoint>]
let main _ =
let numericString = "106779"
let styles = NumberStyles.Integer
callTryParse numericString styles
let numericString = "-30677"
let styles = NumberStyles.None
callTryParse numericString styles
let styles = NumberStyles.AllowLeadingSign
callTryParse numericString styles
let numericString = "301677-"
callTryParse numericString styles
let styles = styles ||| NumberStyles.AllowTrailingSign
callTryParse numericString styles
let numericString = "$10634"
let styles = NumberStyles.Integer
callTryParse numericString styles
let styles = NumberStyles.Integer ||| NumberStyles.AllowCurrencySymbol
callTryParse numericString styles
let numericString = "10345.00"
let styles = NumberStyles.Integer ||| NumberStyles.AllowDecimalPoint
callTryParse numericString styles
let numericString = "10345.72"
let styles = NumberStyles.Integer ||| NumberStyles.AllowDecimalPoint
callTryParse numericString styles
let numericString = "22,593"
let styles = NumberStyles.Integer ||| NumberStyles.AllowThousands
callTryParse numericString styles
let numericString = "12E-01"
let styles = NumberStyles.Integer ||| NumberStyles.AllowExponent
callTryParse numericString styles
let numericString = "12E03"
callTryParse numericString styles
let numericString = "80c1"
callTryParse numericString NumberStyles.HexNumber
let numericString = "0x80C1"
callTryParse numericString NumberStyles.HexNumber
0
// The example displays the following output to the console:
// Converted '106779' to 106779.
// Attempted conversion of '-30677' failed.
// Converted '-30677' to -30677.
// Attempted conversion of '301677-' failed.
// Converted '301677-' to -301677.
// Attempted conversion of '$10634' failed.
// Converted '$10634' to 10634.
// Converted '10345.00' to 10345.
// Attempted conversion of '10345.72' failed.
// Converted '22,593' to 22593.
// Attempted conversion of '12E-01' failed.
// Converted '12E03' to 12000.
// Converted '80c1' to 32961.
// Attempted conversion of '0x80C1' failed.
Imports System.Globalization
Module StringParsing
Public Sub Main()
Dim numericString As String
Dim styles As NumberStyles
numericString = "106779"
styles = NumberStyles.Integer
CallTryParse(numericString, styles)
numericString = "-30677"
styles = NumberStyles.None
CallTryParse(numericString, styles)
styles = NumberStyles.AllowLeadingSign
CallTryParse(numericString, styles)
numericString = "301677-"
CallTryParse(numericString, styles)
styles = styles Or NumberStyles.AllowTrailingSign
CallTryParse(numericString, styles)
numericString = "$10634"
styles = NumberStyles.Integer
CallTryParse(numericString, styles)
styles = NumberStyles.Integer Or NumberStyles.AllowCurrencySymbol
CallTryParse(numericString, styles)
numericString = "10345.00"
styles = NumberStyles.Integer Or NumberStyles.AllowDecimalPoint
CallTryParse(numericString, styles)
numericString = "10345.72"
styles = NumberStyles.Integer Or NumberStyles.AllowDecimalPoint
CallTryParse(numericString, styles)
numericString = "22,593"
styles = NumberStyles.Integer Or NumberStyles.AllowThousands
CallTryParse(numericString, styles)
numericString = "12E-01"
styles = NumberStyles.Integer Or NumberStyles.AllowExponent
CallTryParse(numericString, styles)
numericString = "12E03"
CallTryParse(numericString, styles)
numericString = "80c1"
CallTryParse(numericString, NumberStyles.HexNumber)
numericString = "0x80C1"
CallTryParse(numericString, NumberStyles.HexNumber)
End Sub
Private Sub CallTryParse(stringToConvert As String, styles AS NumberStyles)
Dim number As Integer
Dim provider As CultureInfo
' If currency symbol is allowed, use en-US culture.
If CBool(styles And NumberStyles.AllowCurrencySymbol) Then
provider = CultureInfo.CurrentCulture
Else
provider = New CultureInfo("en-US")
End If
Dim result As Boolean = Int32.TryParse(stringToConvert, styles, _
provider, number)
If result Then
Console.WriteLine("Converted '{0}' to {1}.", stringToConvert, number)
Else
Console.WriteLine("Attempted conversion of '{0}' failed.", _
Convert.ToString(stringToConvert))
End If
End Sub
End Module
' The example displays the following output to the console:
' Converted '106779' to 106779.
' Attempted conversion of '-30677' failed.
' Converted '-30677' to -30677.
' Attempted conversion of '301677-' failed.
' Converted '301677-' to -301677.
' Attempted conversion of '$10634' failed.
' Converted '$10634' to 10634.
' Converted '10345.00' to 10345.
' Attempted conversion of '10345.72' failed.
' Converted '22,593' to 22593.
' Attempted conversion of '12E-01' failed.
' Converted '12E03' to 12000.
' Converted '80c1' to 32961.
' Attempted conversion of '0x80C1' failed.
Opmerkingen
De TryParse methode lijkt op de Parse methode, behalve dat de TryParse methode geen uitzondering genereert als de conversie mislukt. Het elimineert de noodzaak om uitzonderingsafhandeling te gebruiken om te testen op een FormatException in het geval dat s ongeldig is en niet kan worden geparseerd.
De style parameter definieert de stijlelementen (zoals witruimte of een positief of negatief teken) die zijn toegestaan in de s parameter om de parseringsbewerking te laten slagen. Dit moet een combinatie zijn van bitvlagmen uit de NumberStyles opsomming. Afhankelijk van de waarde van style, kan de s parameter de volgende elementen bevatten:
[ws][$][teken][cijfers;]digits[.fractional_digits][e[sign]digits][ws]
Of, als de style parameter het volgende bevat AllowHexSpecifier:
[ws]hexdigits[ws]
Items in vierkante haken ([ en ]) zijn optioneel. In de volgende tabel wordt elk element beschreven.
| Element | Beschrijving |
|---|---|
| Ws | Optionele witruimte. Witruimte kan aan het begin van s de styleNumberStyles.AllowLeadingWhite vlag worden weergegeven, of aan het einde van s de styleNumberStyles.AllowTrailingWhite vlag. |
| $ | Een cultuurspecifiek valutasymbool. De positie in de tekenreeks wordt gedefinieerd door de CurrencyPositivePattern eigenschap van het NumberFormatInfo object dat wordt geretourneerd door de GetFormat methode van de provider parameter. Het valutasymbool kan worden weergegeven s als style deze de NumberStyles.AllowCurrencySymbol vlag bevat. |
| ondertekenen | Een optioneel teken. Een tekensymbool kan worden weergegeven s als style deze de NumberStyles.AllowLeadingSign of NumberStyles.AllowTrailingSign vlaggen bevat. |
| Cijfers | Een reeks cijfers van 0 tot en met 9. |
| , | Een cultuurspecifiek scheidingsteken voor duizendtallen. Het scheidingsteken voor duizendtallen van de cultuur die is opgegeven door provider , kan worden weergegeven s als style de NumberStyles.AllowThousands vlag wordt opgenomen. |
| . | Een cultuurspecifiek decimaalteken. Het decimaalteken van de cultuur die is opgegeven door provider , kan worden weergegeven s als style de NumberStyles.AllowDecimalPoint vlag wordt opgenomen. |
| fractional_digits | Een of meer exemplaren van het cijfer 0. Fractionele cijfers kunnen alleen worden weergegeven als sstyle de NumberStyles.AllowDecimalPoint vlag wordt opgenomen. |
| e | Het teken e of E, dat aangeeft dat de waarde wordt weergegeven in exponentiële notatie. De s parameter kan een getal in exponentiële notatie vertegenwoordigen als style deze de NumberStyles.AllowExponent vlag bevat. |
| hexdigits | Een reeks hexadecimale cijfers van 0 tot en met f of 0 tot en met F. |
Note
Alle nultekens (U+0000) s worden genegeerd door de parseringsbewerking, ongeacht de waarde van het style argument.
Een tekenreeks met alleen decimale cijfers (die overeenkomt met de NumberStyles.None vlag) parseert altijd met succes. De meeste resterende NumberStyles leden bepalen elementen die mogelijk wel aanwezig zijn in deze invoertekenreeks, maar die niet aanwezig zijn. De volgende tabel geeft aan hoe afzonderlijke NumberStyles leden van invloed zijn op de elementen die aanwezig kunnen zijn in s.
| Niet-samengestelde getalstijlwaarden | Elementen die naast cijfers zijn toegestaan |
|---|---|
| NumberStyles.None | Alleen decimale cijfers. |
| NumberStyles.AllowDecimalPoint | De decimale punt (.) en fractional_digits elementen.
Fractional_digits mag echter slechts uit één of meer cijfers bestaan of de methode retourneertfalse. |
| NumberStyles.AllowExponent | De s parameter kan ook exponentiële notatie gebruiken. Als s een getal in exponentiële notatie vertegenwoordigt, moet het een geheel getal in het gegevenstype Int32 vertegenwoordigen zonder een niet-nul, fractioneel onderdeel. |
| NumberStyles.AllowLeadingWhite | Het ws-element aan het begin van s. |
| NumberStyles.AllowTrailingWhite | Het ws-element aan het einde van s. |
| NumberStyles.AllowLeadingSign | Een teken kan vóór cijfers worden weergegeven. |
| NumberStyles.AllowTrailingSign | Een teken kan na cijfers worden weergegeven. |
| NumberStyles.AllowParentheses | Het tekenelement in de vorm van haakjes tussen de numerieke waarde. |
| NumberStyles.AllowThousands | Het scheidingsteken voor duizendtallen (,) |
| NumberStyles.AllowCurrencySymbol | Het $ element. |
| NumberStyles.Currency | Alle elementen. De s parameter kan geen hexadecimaal getal of een getal in exponentiële notatie vertegenwoordigen. |
| NumberStyles.Float | Het ws-element aan het begin of einde van s, het teken aan het begin van sen het decimaalteken (.). De s parameter kan ook exponentiële notatie gebruiken. |
| NumberStyles.Number | De elementen ws, teken, scheidingstekens voor duizendtallen (,) en decimaalteken (.). |
| NumberStyles.Any | Alle stijlen, behalve s geen hexadecimaal getal. |
Als de NumberStyles.AllowHexSpecifier vlag wordt gebruikt, s moet een hexadecimale waarde zonder voorvoegsel zijn. C9AF3 parseert bijvoorbeeld met succes, maar '0xC9AF3' niet. De enige andere vlaggen die aanwezig kunnen zijn, style zijn NumberStyles.AllowLeadingWhite en NumberStyles.AllowTrailingWhite. (De NumberStyles opsomming heeft een samengestelde stijl, NumberStyles.HexNumberdie beide witruimtevlagmen bevat.)
De provider parameter is een IFormatProvider implementatie, zoals een CultureInfo object of een NumberFormatInfo object, waarvan GetFormat de methode een NumberFormatInfo object retourneert. Het NumberFormatInfo object biedt cultuurspecifieke informatie over de indeling van s. Als provider dat het is null, wordt het NumberFormatInfo object voor de huidige cultuur gebruikt.