SByte.TryParse Metod

Definition

Konverterar strängrepresentationen av ett tal till dess 8-bitars signerade heltalsekvivalent. En returkod anger om konverteringen lyckades eller misslyckades.

Överlagringar

Name Description
TryParse(String, IFormatProvider, SByte)

Försöker parsa en sträng till ett värde.

TryParse(ReadOnlySpan<Char>, SByte)

Försöker konvertera spanrepresentationen av ett tal till dess SByte motsvarighet och returnerar ett värde som anger om konverteringen lyckades.

TryParse(String, SByte)

Försöker konvertera strängrepresentationen av ett tal till dess SByte motsvarighet och returnerar ett värde som anger om konverteringen lyckades.

TryParse(ReadOnlySpan<Byte>, IFormatProvider, SByte)

Försöker parsa ett intervall med UTF-8 tecken till ett värde.

TryParse(ReadOnlySpan<Char>, IFormatProvider, SByte)

Försöker parsa ett teckenintervall till ett värde.

TryParse(ReadOnlySpan<Byte>, NumberStyles, IFormatProvider, SByte)

Försöker parsa ett intervall med UTF-8 tecken till ett värde.

TryParse(ReadOnlySpan<Byte>, SByte)

Försöker konvertera ett UTF-8-teckensintervall som innehåller strängrepresentationen av ett tal till dess 8-bitars signerade heltalsmotsvarighet.

TryParse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider, SByte)

Försöker konvertera spanrepresentationen av ett tal i ett angivet format och kulturspecifikt format till dess SByte motsvarighet och returnerar ett värde som anger om konverteringen lyckades.

TryParse(String, NumberStyles, IFormatProvider, SByte)

Försöker konvertera strängrepresentationen av ett tal i ett angivet format och kulturspecifikt format till dess SByte motsvarighet och returnerar ett värde som anger om konverteringen lyckades.

TryParse(String, IFormatProvider, SByte)

Källa:
SByte.cs
Källa:
SByte.cs
Källa:
SByte.cs
Källa:
SByte.cs
Källa:
SByte.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::SByte % result) = IParsable<System::SByte>::TryParse;
public static bool TryParse(string? s, IFormatProvider? provider, out sbyte result);
static member TryParse : string * IFormatProvider * sbyte -> bool
Public Shared Function TryParse (s As String, provider As IFormatProvider, ByRef result As SByte) As Boolean

Parametrar

s
String

Strängen som ska parsas.

provider
IFormatProvider

Ett objekt som tillhandahåller kulturspecifik formateringsinformation om s.

result
SByte

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<Char>, SByte)

Källa:
SByte.cs
Källa:
SByte.cs
Källa:
SByte.cs
Källa:
SByte.cs
Källa:
SByte.cs

Viktigt!

Detta API uppfyller inte CLS.

Försöker konvertera spanrepresentationen av ett tal till dess SByte motsvarighet och returnerar ett värde som anger om konverteringen lyckades.

public:
 static bool TryParse(ReadOnlySpan<char> s, [Runtime::InteropServices::Out] System::SByte % result);
public static bool TryParse(ReadOnlySpan<char> s, out sbyte result);
[System.CLSCompliant(false)]
public static bool TryParse(ReadOnlySpan<char> s, out sbyte result);
static member TryParse : ReadOnlySpan<char> * sbyte -> bool
[<System.CLSCompliant(false)>]
static member TryParse : ReadOnlySpan<char> * sbyte -> bool
Public Shared Function TryParse (s As ReadOnlySpan(Of Char), ByRef result As SByte) As Boolean

Parametrar

s
ReadOnlySpan<Char>

Ett intervall som innehåller de tecken som representerar talet som ska konverteras.

result
SByte

När den här metoden returneras innehåller det 8-bitars signerade heltalsvärdet som motsvarar talet som finns i s om konverteringen lyckades eller noll om konverteringen misslyckades. Konverteringen misslyckas om parametern s är null eller Empty, inte har rätt format eller representerar ett tal som är mindre än SByte.MinValue eller större än SByte.MaxValue. Den här parametern skickas onitialiserad; alla värden som ursprungligen angavs i result skrivs över.

Returer

true om s har konverterats, annars false.

Attribut

Gäller för

TryParse(String, SByte)

Källa:
SByte.cs
Källa:
SByte.cs
Källa:
SByte.cs
Källa:
SByte.cs
Källa:
SByte.cs

Viktigt!

Detta API uppfyller inte CLS.

Försöker konvertera strängrepresentationen av ett tal till dess SByte motsvarighet och returnerar ett värde som anger om konverteringen lyckades.

public:
 static bool TryParse(System::String ^ s, [Runtime::InteropServices::Out] System::SByte % result);
[System.CLSCompliant(false)]
public static bool TryParse(string s, out sbyte result);
public static bool TryParse(string? s, out sbyte result);
[System.CLSCompliant(false)]
public static bool TryParse(string? s, out sbyte result);
[<System.CLSCompliant(false)>]
static member TryParse : string * sbyte -> bool
static member TryParse : string * sbyte -> bool
Public Shared Function TryParse (s As String, ByRef result As SByte) As Boolean

Parametrar

s
String

En sträng som innehåller ett tal som ska konverteras.

result
SByte

När den här metoden returneras innehåller det 8-bitars signerade heltalsvärdet som motsvarar talet som finns i s om konverteringen lyckades eller noll om konverteringen misslyckades. Konverteringen misslyckas om parametern s är null eller Empty, inte har rätt format eller representerar ett tal som är mindre än SByte.MinValue eller större än SByte.MaxValue. Den här parametern skickas onitialiserad; alla värden som ursprungligen angavs i result skrivs över.

Returer

true om s har konverterats, annars false.

Attribut

Exempel

I följande exempel försöker konvertera strängarna i en matris till värden genom att SByte anropa TryParse(String, SByte) metoden.

string[] numericStrings = {"-3.6", "12.8", "+16.7", "    3   ", "(17)", 
                           "-17", "+12", "18-", "987", "1,024", "  127 "};
sbyte number;
foreach (string numericString in numericStrings)
{
   if (sbyte.TryParse(numericString, out number)) 
      Console.WriteLine("Converted '{0}' to {1}.", numericString, number);
   else
      Console.WriteLine("Cannot convert '{0}' to an SByte.", numericString);
}
// The example displays the following output to the console:
//       Cannot convert '-3.6' to an SByte.
//       Cannot convert '12.8' to an SByte.
//       Cannot convert '+16.7' to an SByte.
//       Converted '    3   ' to 3.
//       Cannot convert '(17)' to an SByte.
//       Converted '-17' to -17.
//       Converted '+12' to 12.
//       Cannot convert '18-' to an SByte.
//       Cannot convert '987' to an SByte.
//       Cannot convert '1,024' to an SByte.
//       Converted '  127 ' to 127.
open System

let numericStrings = 
    [| "-3.6"; "12.8"; "+16.7"; "    3   "; "(17)" 
       "-17"; "+12"; "18-"; "987"; "1,024"; "  127 " |]

for numericString in numericStrings do
    match SByte.TryParse numericString with 
    | true, number ->
        printfn $"Converted '{numericString}' to {number}."
    | _ ->
        printfn $"Cannot convert '{numericString}' to an SByte."
// The example displays the following output to the console:
//       Cannot convert '-3.6' to an SByte.
//       Cannot convert '12.8' to an SByte.
//       Cannot convert '+16.7' to an SByte.
//       Converted '    3   ' to 3.
//       Cannot convert '(17)' to an SByte.
//       Converted '-17' to -17.
//       Converted '+12' to 12.
//       Cannot convert '18-' to an SByte.
//       Cannot convert '987' to an SByte.
//       Cannot convert '1,024' to an SByte.
//       Converted '  127 ' to 127.
Dim numericStrings() As String = {"-3.6", "12.8", "+16.7", "    3   ", _
                                  "(17)", "-17", "+12", "18-", "987", _
                                  "1,024", "  127 "}
Dim number As SByte
For Each numericString As String In numericStrings
   If SByte.TryParse(numericString, number) Then
      Console.WriteLine("Converted '{0}' to {1}.", numericString, number)
   Else
      Console.WriteLine("Cannot convert '{0}' to an SByte.", numericString)
   End If      
Next
' The example displays the following output to the console:
'       Cannot convert '-3.6' to an SByte.
'       Cannot convert '12.8' to an SByte.
'       Cannot convert '+16.7' to an SByte.
'       Converted '    3   ' to 3.
'       Cannot convert '(17)' to an SByte.
'       Converted '-17' to -17.
'       Converted '+12' to 12.
'       Cannot convert '18-' to an SByte.
'       Cannot convert '987' to an SByte.
'       Cannot convert '1,024' to an SByte.
'       Converted '  127 ' to 127.

Kommentarer

Metoden SByte.TryParse(String, SByte) liknar SByte.Parse(String) metoden, förutom att den inte utlöser ett undantag om konverteringen misslyckas. Den här metoden eliminerar behovet av att använda undantagshantering för att testa för en FormatException om value är ogiltig och kan inte parsas.

Parametern s ska vara strängrepresentationen av ett decimaltal i följande formulär:

[ws][sign]digits[ws]

Element inom hakparenteser ([ och ]) är valfria. I följande tabell beskrivs varje element.

Element Description
Ws Valfritt blanksteg.
signera Ett valfritt tecken. Giltiga teckentecken bestäms av NumberFormatInfo.NegativeSign egenskaperna och NumberFormatInfo.PositiveSign för den aktuella kulturen.
Siffror En sekvens med decimalsiffror från 0 till 9.

Note

Strängen som anges av parametern value får inte innehålla några gruppavgränsare eller decimaltecken, och den får inte ha en decimaldel.

Parametern s tolkas med hjälp NumberStyles.Integer av formatet . Förutom decimaltalen tillåts endast inledande och avslutande blanksteg med ett inledande tecken. Om du uttryckligen vill definiera formatelementen med den kulturspecifika formateringsinformation som kan finnas i valueanropar TryParse(String, NumberStyles, IFormatProvider, SByte) du metoden.

Parametern s parsas med hjälp av formateringsinformationen i ett NumberFormatInfo objekt för den aktuella kulturen. Mer information finns i NumberFormatInfo.CurrentInfo.

Den här överlagringen tolkar alla siffror i parametern value som decimalsiffror. Om du vill parsa strängrepresentationen av ett hexadecimalt nummer anropar du överlagringen TryParse(String, NumberStyles, IFormatProvider, SByte) i stället.

Se även

Gäller för

TryParse(ReadOnlySpan<Byte>, IFormatProvider, SByte)

Källa:
SByte.cs
Källa:
SByte.cs
Källa:
SByte.cs
Källa:
SByte.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::SByte % result) = IUtf8SpanParsable<System::SByte>::TryParse;
public static bool TryParse(ReadOnlySpan<byte> utf8Text, IFormatProvider? provider, out sbyte result);
static member TryParse : ReadOnlySpan<byte> * IFormatProvider * sbyte -> bool
Public Shared Function TryParse (utf8Text As ReadOnlySpan(Of Byte), provider As IFormatProvider, ByRef result As SByte) 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
SByte

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, SByte)

Källa:
SByte.cs
Källa:
SByte.cs
Källa:
SByte.cs
Källa:
SByte.cs
Källa:
SByte.cs

Försöker parsa ett teckenintervall till ett värde.

public:
 static bool TryParse(ReadOnlySpan<char> s, IFormatProvider ^ provider, [Runtime::InteropServices::Out] System::SByte % result) = ISpanParsable<System::SByte>::TryParse;
public static bool TryParse(ReadOnlySpan<char> s, IFormatProvider? provider, out sbyte result);
static member TryParse : ReadOnlySpan<char> * IFormatProvider * sbyte -> bool
Public Shared Function TryParse (s As ReadOnlySpan(Of Char), provider As IFormatProvider, ByRef result As SByte) 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
SByte

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(ReadOnlySpan<Byte>, NumberStyles, IFormatProvider, SByte)

Källa:
SByte.cs
Källa:
SByte.cs
Källa:
SByte.cs
Källa:
SByte.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::SByte % result) = System::Numerics::INumberBase<System::SByte>::TryParse;
public static bool TryParse(ReadOnlySpan<byte> utf8Text, System.Globalization.NumberStyles style, IFormatProvider? provider, out sbyte result);
static member TryParse : ReadOnlySpan<byte> * System.Globalization.NumberStyles * IFormatProvider * sbyte -> bool
Public Shared Function TryParse (utf8Text As ReadOnlySpan(Of Byte), style As NumberStyles, provider As IFormatProvider, ByRef result As SByte) 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
SByte

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<Byte>, SByte)

Källa:
SByte.cs
Källa:
SByte.cs
Källa:
SByte.cs
Källa:
SByte.cs

Försöker konvertera ett UTF-8-teckensintervall som innehåller strängrepresentationen av ett tal till dess 8-bitars signerade heltalsmotsvarighet.

public:
 static bool TryParse(ReadOnlySpan<System::Byte> utf8Text, [Runtime::InteropServices::Out] System::SByte % result);
public static bool TryParse(ReadOnlySpan<byte> utf8Text, out sbyte result);
static member TryParse : ReadOnlySpan<byte> * sbyte -> bool
Public Shared Function TryParse (utf8Text As ReadOnlySpan(Of Byte), ByRef result As SByte) As Boolean

Parametrar

utf8Text
ReadOnlySpan<Byte>

Ett intervall som innehåller UTF-8 tecken som representerar talet som ska konverteras.

result
SByte

När den här metoden returnerar innehåller det 8-bitars signerade heltalsvä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>, NumberStyles, IFormatProvider, SByte)

Källa:
SByte.cs
Källa:
SByte.cs
Källa:
SByte.cs
Källa:
SByte.cs
Källa:
SByte.cs

Viktigt!

Detta API uppfyller inte CLS.

Försöker konvertera spanrepresentationen av ett tal i ett angivet format och kulturspecifikt format till dess SByte motsvarighet och returnerar ett värde som anger om konverteringen lyckades.

public:
 static bool TryParse(ReadOnlySpan<char> s, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] System::SByte % result) = System::Numerics::INumberBase<System::SByte>::TryParse;
public:
 static bool TryParse(ReadOnlySpan<char> s, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] System::SByte % result);
public static bool TryParse(ReadOnlySpan<char> s, System.Globalization.NumberStyles style, IFormatProvider? provider, out sbyte result);
[System.CLSCompliant(false)]
public static bool TryParse(ReadOnlySpan<char> s, System.Globalization.NumberStyles style, IFormatProvider provider, out sbyte result);
[System.CLSCompliant(false)]
public static bool TryParse(ReadOnlySpan<char> s, System.Globalization.NumberStyles style, IFormatProvider? provider, out sbyte result);
static member TryParse : ReadOnlySpan<char> * System.Globalization.NumberStyles * IFormatProvider * sbyte -> bool
[<System.CLSCompliant(false)>]
static member TryParse : ReadOnlySpan<char> * System.Globalization.NumberStyles * IFormatProvider * sbyte -> bool
Public Shared Function TryParse (s As ReadOnlySpan(Of Char), style As NumberStyles, provider As IFormatProvider, ByRef result As SByte) 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 Integer.

provider
IFormatProvider

Ett objekt som tillhandahåller kulturspecifik formateringsinformation om s.

result
SByte

När den här metoden returnerar innehåller det 8-bitars signerade heltalsvärdet som motsvarar talet i s, om konverteringen lyckades eller noll om konverteringen misslyckades. Konverteringen misslyckas om parametern s är null eller Empty, inte är i ett format som är kompatibelt med styleeller representerar ett tal som är mindre än SByte.MinValue eller större än SByte.MaxValue. Den här parametern skickas onitialiserad; alla värden som ursprungligen angavs i result skrivs över.

Returer

true om s har konverterats, annars false.

Attribut

Gäller för

TryParse(String, NumberStyles, IFormatProvider, SByte)

Källa:
SByte.cs
Källa:
SByte.cs
Källa:
SByte.cs
Källa:
SByte.cs
Källa:
SByte.cs

Viktigt!

Detta API uppfyller inte CLS.

Alternativ som uppfyller CLS
System.Int16.TryParse(String, Int16)

Försöker konvertera strängrepresentationen av ett tal i ett angivet format och kulturspecifikt format till dess SByte motsvarighet och returnerar ett värde som anger om konverteringen lyckades.

public:
 static bool TryParse(System::String ^ s, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] System::SByte % result);
public:
 static bool TryParse(System::String ^ s, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] System::SByte % result) = System::Numerics::INumberBase<System::SByte>::TryParse;
[System.CLSCompliant(false)]
public static bool TryParse(string s, System.Globalization.NumberStyles style, IFormatProvider provider, out sbyte result);
public static bool TryParse(string? s, System.Globalization.NumberStyles style, IFormatProvider? provider, out sbyte result);
[System.CLSCompliant(false)]
public static bool TryParse(string? s, System.Globalization.NumberStyles style, IFormatProvider? provider, out sbyte result);
[<System.CLSCompliant(false)>]
static member TryParse : string * System.Globalization.NumberStyles * IFormatProvider * sbyte -> bool
static member TryParse : string * System.Globalization.NumberStyles * IFormatProvider * sbyte -> bool
Public Shared Function TryParse (s As String, style As NumberStyles, provider As IFormatProvider, ByRef result As SByte) As Boolean

Parametrar

s
String

En sträng som representerar ett tal 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 Integer.

provider
IFormatProvider

Ett objekt som tillhandahåller kulturspecifik formateringsinformation om s.

result
SByte

När den här metoden returnerar innehåller det 8-bitars signerade heltalsvärdet som motsvarar talet i s, om konverteringen lyckades eller noll om konverteringen misslyckades. Konverteringen misslyckas om parametern s är null eller Empty, inte är i ett format som är kompatibelt med styleeller representerar ett tal som är mindre än SByte.MinValue eller större än SByte.MaxValue. Den här parametern skickas onitialiserad; alla värden som ursprungligen angavs i result skrivs över.

Returer

true om s har konverterats, annars false.

Attribut

Undantag

style är inte ett NumberStyles värde.

-eller-

style är inte en kombination av AllowHexSpecifier och HexNumber värden.

Exempel

I följande exempel anropas TryParse(String, NumberStyles, IFormatProvider, SByte) metoden med ett antal olika strängar och NumberStyles värden.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      string numericString;
      NumberStyles styles;
      
      numericString = "106";
      styles = NumberStyles.Integer;
      CallTryParse(numericString, styles);
      
      numericString = "-106";
      styles = NumberStyles.None;
      CallTryParse(numericString, styles);
      
      numericString = "103.00";
      styles = NumberStyles.Integer | NumberStyles.AllowDecimalPoint;
      CallTryParse(numericString, styles);
      
      numericString = "103.72";
      styles = NumberStyles.Integer | NumberStyles.AllowDecimalPoint;
      CallTryParse(numericString, styles);

      numericString = "10E-01";
      styles = NumberStyles.Integer | NumberStyles.AllowExponent;
      CallTryParse(numericString, styles); 
      
      numericString = "12E-01";
      CallTryParse(numericString, styles);
          
      numericString = "12E01";
      CallTryParse(numericString, styles); 
      
      numericString = "C8";
      CallTryParse(numericString, NumberStyles.HexNumber);
      
      numericString = "0x8C";
      CallTryParse(numericString, NumberStyles.HexNumber);
   }
   
   private static void CallTryParse(string stringToConvert, NumberStyles styles)
   {
      sbyte number;
      bool result = SByte.TryParse(stringToConvert, styles, 
                                   CultureInfo.InvariantCulture, out number);
      if (result)
         Console.WriteLine($"Converted '{stringToConvert}' to {number}.");
      else
         Console.WriteLine($"Attempted conversion of '{stringToConvert}' failed.");
   }
}
// The example displays the following output:
//       Converted '106' to 106.
//       Attempted conversion of '-106' failed.
//       Converted '103.00' to 103.
//       Attempted conversion of '103.72' failed.
//       Converted '10E-01' to 1.
//       Attempted conversion of '12E-01' failed.
//       Converted '12E01' to 120.
//       Converted 'C8' to -56.
//       Attempted conversion of '0x8C' failed.
open System
open System.Globalization

let callTryParse (stringToConvert: string) styles =
    match SByte.TryParse(stringToConvert, styles, CultureInfo.InvariantCulture) with
    | true, number ->
        printfn $"Converted '{stringToConvert}' to {number}."
    | _ ->
        printfn $"Attempted conversion of '{stringToConvert}' failed."

[<EntryPoint>]
let main _ =
    let numericString = "106"
    let styles = NumberStyles.Integer
    callTryParse numericString styles
    
    let numericString = "-106"
    let styles = NumberStyles.None
    callTryParse numericString styles
    
    let numericString = "103.00"
    let styles = NumberStyles.Integer ||| NumberStyles.AllowDecimalPoint
    callTryParse numericString styles
    
    let numericString = "103.72"
    let styles = NumberStyles.Integer ||| NumberStyles.AllowDecimalPoint
    callTryParse numericString styles

    let numericString = "10E-01"
    let styles = NumberStyles.Integer ||| NumberStyles.AllowExponent
    callTryParse numericString styles 
    
    let numericString = "12E-01"
    callTryParse numericString styles
        
    let numericString = "12E01"
    callTryParse numericString styles 
    
    let numericString = "C8"
    callTryParse numericString NumberStyles.HexNumber
    
    let numericString = "0x8C"
    callTryParse numericString NumberStyles.HexNumber
    0

// The example displays the following output:
//       Converted '106' to 106.
//       Attempted conversion of '-106' failed.
//       Converted '103.00' to 103.
//       Attempted conversion of '103.72' failed.
//       Converted '10E-01' to 1.
//       Attempted conversion of '12E-01' failed.
//       Converted '12E01' to 120.
//       Converted 'C8' to -56.
//       Attempted conversion of '0x8C' failed.
Imports System.Globalization

Module StringParsing
   Public Sub Main()
      Dim numericString As String
      Dim styles As NumberStyles
      
      numericString = "106"
      styles = NumberStyles.Integer
      CallTryParse(numericString, styles)
      
      numericString = "-106"
      styles = NumberStyles.None
      CallTryParse(numericString, styles)
      
      numericString = "103.00"
      styles = NumberStyles.Integer Or NumberStyles.AllowDecimalPoint
      CallTryParse(numericString, styles)
      
      numericString = "103.72"
      styles = NumberStyles.Integer Or NumberStyles.AllowDecimalPoint
      CallTryParse(numericString, styles)

      numericString = "10E-01"
      styles = NumberStyles.Integer Or NumberStyles.AllowExponent
      CallTryParse(numericString, styles) 
      
      numericString = "12E-01"
      CallTryParse(numericString, styles)
          
      numericString = "12E01"
      CallTryParse(numericString, styles) 
      
      numericString = "C8"
      CallTryParse(numericString, NumberStyles.HexNumber)
      
      numericString = "0x8C"
      CallTryParse(numericString, NumberStyles.HexNumber)
   End Sub
   
   Private Sub CallTryParse(stringToConvert As String, styles AS NumberStyles)
      Dim number As SByte
      Dim result As Boolean = SByte.TryParse(stringToConvert, styles, _
                                             CultureInfo.InvariantCulture, number)
      If result Then
         Console.WriteLine("Converted '{0}' to {1}.", stringToConvert, number)
      Else
         Console.WriteLine("Attempted conversion of '{0}' failed.", _
                           Convert.ToString(stringToConvert))
      End If                                                                           
   End Sub
End Module
' The example displays the following output to the console:
'       Converted '106' to 106.
'       Attempted conversion of '-106' failed.
'       Converted '103.00' to 103.
'       Attempted conversion of '103.72' failed.
'       Converted '10E-01' to 1.
'       Attempted conversion of '12E-01' failed.
'       Converted '12E01' to 120.
'       Converted 'C8' to -56.
'       Attempted conversion of '0x8C' failed.

Kommentarer

Metoden TryParse(String, NumberStyles, IFormatProvider, SByte) liknar Parse(String, NumberStyles, IFormatProvider) metoden, förutom att den inte utlöser ett undantag om konverteringen misslyckas. Den här metoden eliminerar behovet av att använda undantagshantering för att testa för en FormatException om value är ogiltig och kan inte parsas korrekt.

Parametern style definierar formatelementen (till exempel tomt utrymme eller ett positivt eller negativt tecken) som tillåts i parametern value för att parsningsåtgärden ska lyckas. Det måste vara en kombination av bitflaggor från NumberStyles uppräkningen. Beroende på värdet för stylekan parametern value innehålla följande element:

[ws][$][sign][digits,]digits[.fractional_digits][E[sign]exponential_digits][ws]

Om parametern style innehåller AllowHexSpecifierkan parametern value innehålla följande element:

[ws]hexdigits[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 value om style innehåller NumberStyles.AllowLeadingWhite flaggan, eller i slutet av value om style innehåller NumberStyles.AllowTrailingWhite flaggan.
$ En kulturspecifik valutasymbol. Dess position i strängen definieras av CurrencyPositivePattern egenskapen för objektet NumberFormatInfo som returneras av GetFormat parametermetoden provider . Valutasymbolen kan visas i value om style den NumberStyles.AllowCurrencySymbol innehåller flaggan.
signera Ett valfritt tecken. Tecknet kan visas i början av value om style innehåller NumberStyles.AllowLeadingSign flaggan, och det kan visas i slutet av value om style innehåller NumberStyles.AllowTrailingSign flaggan. Parenteser kan användas i value för att ange ett negativt värde om style den NumberStyles.AllowParentheses innehåller flaggan.
Siffror En sekvens med siffror från 0 till 9.
, En kulturspecifik gruppavgränsare. Gruppavgränsaren för kulturen som anges av provider kan visas i value om style den NumberStyles.AllowThousands innehåller flaggan.
. Ett kulturspecifikt decimaltecken. Decimaltecknet för kulturen som anges av provider kan visas i value om style den NumberStyles.AllowDecimalPoint innehåller flaggan.
fractional_digits En eller flera förekomster av siffran 0. Bråksiffror kan bara visas i value om style den NumberStyles.AllowDecimalPoint innehåller flaggan.
E Tecknet "e" eller "E", som anger att värdet representeras i exponentiell (vetenskaplig) notation. Parametern value kan representera ett tal i exponentiell notation om style den NumberStyles.AllowExponent innehåller flaggan.
exponential_digits En sekvens med siffror från 0 till 9. Parametern value kan representera ett tal i exponentiell notation om style den NumberStyles.AllowExponent innehåller flaggan.
hexdigits En sekvens med hexadecimala siffror från 0 till f eller 0 till och med F.

Note

Alla avslutande NUL-tecken (U+0000) i s ignoreras av parsningsåtgärden, oavsett argumentets style värde.

En sträng med endast decimalsiffror (vilket motsvarar NumberStyles.None flaggan) parsar alltid korrekt. De flesta av de återstående NumberStyles medlemmarna styr element som kan finnas, men som inte måste finnas i den här indatasträngen. Följande tabell visar hur enskilda NumberStyles medlemmar påverkar de element som kan finnas i value.

Icke-sammansatta NumberStyles värden Element som tillåts i värde utöver siffror
None Endast decimalsiffror.
AllowDecimalPoint Decimaltecknet (.) och fractional_digits element. Men fractional_digits får bara bestå av en eller flera 0 siffror, eller så returnerar falsemetoden .
AllowExponent Tecknet "e" eller "E", som anger exponentiell notation, tillsammans med exponential_digits. Om value representerar ett tal i exponentiell notation får det inte ha en icke-noll, bråkkomponent.
AllowLeadingWhite WS-elementet i början av value.
AllowTrailingWhite WS-elementet i slutet av value.
AllowLeadingSign Teckenelementet före siffror.
AllowTrailingSign Teckenelementet efter siffror.
AllowParentheses Teckenelementet i form av parenteser som omger det numeriska värdet.
AllowThousands Gruppavgränsaren (,).
AllowCurrencySymbol Valutaelementet ($).
Currency Alla element. Kan dock value inte representera ett hexadecimalt tal eller ett tal i exponentiell notation.
Float WS-elementet i början eller slutet av value, signerar i början av valueoch decimaltecknet (.). Parametern value kan också använda exponentiell notation.
Number Elementen ws, sign, group separator (,) och decimaltecknet (.).
Any Alla element. Kan dock value inte representera ett hexadecimalt tal.

NumberStyles.AllowHexSpecifier Om flaggan används value måste vara ett hexadecimalt värde. Giltiga hexadecimala siffror är 0–9, a-f och A-F. De enda andra flaggorna som kan finnas i style är NumberStyles.AllowLeadingWhite och NumberStyles.AllowTrailingWhite. (Uppräkningen NumberStyles har ett sammansatt format, HexNumber, som innehåller båda blankstegsflaggorna.)

Note

Om value är strängrepresentationen av ett hexadecimalt tal kan det inte föregås av någon dekoration (till exempel 0x eller &h) som särskiljer det som ett hexadecimalt tal. Detta gör att konverteringen misslyckas.

Parametern provider är en IFormatProvider implementering. Dess GetFormat metod returnerar ett NumberFormatInfo objekt som ger kulturspecifik information om formatet valueför . Parametern provider kan vara något av följande:

  • Ett CultureInfo objekt som representerar kulturen som tillhandahåller formateringsinformation. Dess GetFormat metod returnerar det NumberFormatInfo objekt som innehåller numerisk formateringsinformation för den kulturen.

  • Ett NumberFormatInfo objekt som innehåller numerisk formateringsinformation. (Dess implementering av GetFormat just returnerar sig själv.)

  • Ett anpassat objekt som implementerar IFormatProvider. Metoden GetFormat instansierar och returnerar objektet NumberFormatInfo som tillhandahåller formateringsinformation.

Om provider är nullNumberFormatInfo används objektet för den aktuella kulturen.

Se även

Gäller för