Int32.TryParse Metoda

Definicja

Konwertuje reprezentację ciągu liczby na 32-bitową liczbę całkowitą ze znakiem 32-bitowym. Wartość zwracana wskazuje, czy operacja zakończyła się pomyślnie.

Przeciążenia

TryParse(ReadOnlySpan<Byte>, IFormatProvider, Int32)

Próbuje przeanalizować zakres znaków UTF-8 w wartości.

TryParse(ReadOnlySpan<Char>, Int32)

Konwertuje reprezentację zakresu liczby w określonym stylu i formacie specyficznym dla kultury na odpowiednik 32-bitowej liczby całkowitej ze znakiem. Wartość zwracana wskazuje, czy konwersja zakończyła się pomyślnie.

TryParse(String, Int32)

Konwertuje reprezentację ciągu liczby na 32-bitową liczbę całkowitą ze znakiem. Wartość zwracana wskazuje, czy konwersja zakończyła się pomyślnie.

TryParse(ReadOnlySpan<Char>, IFormatProvider, Int32)

Próbuje przeanalizować zakres znaków w wartości.

TryParse(String, IFormatProvider, Int32)

Próbuje przeanalizować ciąg w wartości.

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

Próbuje przeanalizować zakres znaków UTF-8 w wartości.

TryParse(ReadOnlySpan<Byte>, Int32)

Próbuje przekonwertować zakres znaków UTF-8 zawierający reprezentację ciągu liczby na odpowiednik 32-bitowej liczby całkowitej ze znakiem.

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

Konwertuje reprezentację zakresu liczby w określonym stylu i formacie specyficznym dla kultury na odpowiednik 32-bitowej liczby całkowitej ze znakiem. Wartość zwracana wskazuje, czy konwersja zakończyła się pomyślnie.

TryParse(String, NumberStyles, IFormatProvider, Int32)

Konwertuje reprezentację ciągu liczby w określonym stylu i formacie specyficznym dla kultury na odpowiednik 32-bitowej liczby całkowitej ze znakiem. Wartość zwracana wskazuje, czy konwersja zakończyła się pomyślnie.

TryParse(ReadOnlySpan<Byte>, IFormatProvider, Int32)

Źródło:
Int32.cs
Źródło:
Int32.cs

Próbuje przeanalizować zakres znaków UTF-8 w wartości.

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

Parametry

utf8Text
ReadOnlySpan<Byte>

Zakres znaków UTF-8 do analizy.

provider
IFormatProvider

Obiekt, który udostępnia informacje o formatowaniu specyficznym dla kultury.utf8Text

result
Int32

Po powrocie utf8Text zawiera wynik pomyślnego analizowania lub niezdefiniowanej wartości w przypadku błędu.

Zwraca

truejeśli utf8Text została pomyślnie przeanalizowana; w przeciwnym razie . false

Dotyczy

TryParse(ReadOnlySpan<Char>, Int32)

Źródło:
Int32.cs
Źródło:
Int32.cs
Źródło:
Int32.cs

Konwertuje reprezentację zakresu liczby w określonym stylu i formacie specyficznym dla kultury na odpowiednik 32-bitowej liczby całkowitej ze znakiem. Wartość zwracana wskazuje, czy konwersja zakończyła się pomyślnie.

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

Parametry

s
ReadOnlySpan<Char>

Zakres zawierający znaki reprezentujące liczbę do konwersji.

result
Int32

Gdy ta metoda zwraca wartość całkowitą ze znakiem 32-bitowym, równoważną liczbie zawartej w smetodzie , jeśli konwersja powiodła się lub zero, jeśli konwersja nie powiodła się. Konwersja kończy się niepowodzeniem, s jeśli parametr ma null wartość lub Empty, nie jest w formacie zgodnym z parametrem stylelub reprezentuje liczbę mniejszą niż Int32.MinValue lub większą niż Int32.MaxValue. Ten parametr jest przekazywany niezainicjowany; każda wartość pierwotnie podana w result zostanie zastąpiona.

Zwraca

truejeśli s pomyślnie przekonwertowano; w przeciwnym razie . false

Dotyczy

TryParse(String, Int32)

Źródło:
Int32.cs
Źródło:
Int32.cs
Źródło:
Int32.cs

Konwertuje reprezentację ciągu liczby na 32-bitową liczbę całkowitą ze znakiem. Wartość zwracana wskazuje, czy konwersja zakończyła się pomyślnie.

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

Parametry

s
String

Ciąg zawierający liczbę, która ma zostać przekształcona.

result
Int32

Gdy ta metoda zwraca wartość całkowitą ze znakiem 32-bitowym, równoważną liczbie zawartej w smetodzie , jeśli konwersja powiodła się lub zero, jeśli konwersja nie powiodła się. Konwersja kończy się niepowodzeniem, s jeśli parametr ma null wartość lub Empty, nie ma poprawnego formatu lub reprezentuje liczbę mniejszą niż Int32.MinValue lub większą niż Int32.MaxValue. Ten parametr jest przekazywany niezainicjowany; każda wartość pierwotnie podana w result zostanie zastąpiona.

Zwraca

truejeśli s pomyślnie przekonwertowano; w przeciwnym razie . false

Przykłady

Poniższy przykład wywołuje metodę Int32.TryParse(String, Int32) z kilkoma różnymi wartościami ciągów.

using namespace System;


   void TryToParse(String^ value)
   {
      Int32 number;
      bool result = Int32::TryParse(value, number);
      if (result) {
         Console::WriteLine("Converted '{0}' to {1}.", value, number);
      }
      else {
         if (value == nullptr) value = "";
         Console::WriteLine("Attempted conversion of '{0}' failed.", value);
      }
   }


void main()
{
      TryToParse(nullptr);
      TryToParse("160519");
      TryToParse("9432.0");
      TryToParse("16,667");
      TryToParse("   -322   ");
      TryToParse("+4302");
      TryToParse("(100);");
      TryToParse("01FA");
}
// The example displays the following output:
//      Attempted conversion of '' failed.
//      Converted '160519' to 160519.
//      Attempted conversion of '9432.0' failed.
//      Attempted conversion of '16,667' failed.
//      Converted '   -322   ' to -322.
//      Converted '+4302' to 4302.
//      Attempted conversion of '(100);' failed.
//      Attempted conversion of '01FA' failed.
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.

Niektóre ciągi, których TryParse(String, Int32) metoda nie może przekonwertować w tym przykładzie, to:

  • "9432.0". Konwersja kończy się niepowodzeniem, ponieważ ciąg nie może zawierać separatora dziesiętnego; musi zawierać tylko cyfry całkowite.

  • "16,667". Konwersja kończy się niepowodzeniem, ponieważ ciąg nie może zawierać separatorów grup; musi zawierać tylko cyfry całkowite.

  • "(100)". Konwersja kończy się niepowodzeniem, ponieważ ciąg nie może zawierać znaku ujemnego innego niż ten zdefiniowany przez właściwości i NumberFormatInfo.NumberNegativePattern kultury NumberFormatInfo.NegativeSign bieżącej.

  • "01FA". Konwersja kończy się niepowodzeniem, ponieważ ciąg nie może zawierać cyfr szesnastkowe; musi zawierać tylko cyfry dziesiętne.

Uwagi

Metoda jest podobna TryParseParse do metody , z wyjątkiem TryParse metody nie zgłasza wyjątku, jeśli konwersja nie powiedzie się. Eliminuje konieczność użycia obsługi wyjątków w celu przetestowania elementu FormatException w przypadku nieprawidłowego s i nie można go pomyślnie przeanalizować.

Parametr s zawiera liczbę formularzy:

[odstęp][znak]cyfry[odstęp]

Elementy w nawiasach kwadratowych ([ i ]) są opcjonalne. W tabeli poniżej opisano każdy element.

Element Opis
Ws Opcjonalny odstęp.
sign Opcjonalny znak.
Cyfr Sekwencja cyfr od 0 do 9.

Parametr s jest interpretowany przy użyciu NumberStyles.Integer stylu. Oprócz cyfr dziesiętnych dozwolone są tylko spacje wiodące i końcowe wraz z znakiem wiodącym. Aby jawnie zdefiniować elementy stylu wraz z informacjami o formatowaniu specyficznymi dla kultury, które mogą być obecne w sprogramie , użyj Int32.TryParse(String, NumberStyles, IFormatProvider, Int32) metody .

Parametr s jest analizowany przy użyciu informacji o formatowaniu w obiekcie zainicjowanym NumberFormatInfo dla bieżącej kultury systemu. Aby uzyskać więcej informacji, zobacz CurrentInfo.

To przeciążenie TryParse metody interpretuje wszystkie cyfry w parametrze s jako cyfry dziesiętne. Aby przeanalizować ciąg reprezentujący liczbę szesnastkową, wywołaj Int32.TryParse(String, NumberStyles, IFormatProvider, Int32) przeciążenie.

Zobacz też

Dotyczy

TryParse(ReadOnlySpan<Char>, IFormatProvider, Int32)

Źródło:
Int32.cs
Źródło:
Int32.cs
Źródło:
Int32.cs

Próbuje przeanalizować zakres znaków w wartości.

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

Parametry

s
ReadOnlySpan<Char>

Zakres znaków do przeanalizowania.

provider
IFormatProvider

Obiekt, który udostępnia informacje o formatowaniu specyficznym dla kultury.s

result
Int32

Gdy ta metoda zwraca wartość , zawiera wynik pomyślnej analizy s, lub niezdefiniowanej wartości w przypadku błędu.

Zwraca

truejeśli s została pomyślnie przeanalizowana; w przeciwnym razie . false

Dotyczy

TryParse(String, IFormatProvider, Int32)

Źródło:
Int32.cs
Źródło:
Int32.cs
Źródło:
Int32.cs

Próbuje przeanalizować ciąg w wartości.

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

Parametry

s
String

Ciąg do analizy.

provider
IFormatProvider

Obiekt, który udostępnia informacje o formatowaniu specyficznym dla kultury.s

result
Int32

Gdy ta metoda zwraca wartość , zawiera wynik pomyślnej analizy s lub niezdefiniowanej wartości w przypadku błędu.

Zwraca

truejeśli s została pomyślnie przeanalizowana; w przeciwnym razie . false

Dotyczy

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

Źródło:
Int32.cs
Źródło:
Int32.cs

Próbuje przeanalizować zakres znaków UTF-8 w wartości.

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

Parametry

utf8Text
ReadOnlySpan<Byte>

Zakres znaków UTF-8 do analizy.

style
NumberStyles

Bitowa kombinacja stylów liczbowych, które mogą być obecne w .utf8Text

provider
IFormatProvider

Obiekt, który udostępnia informacje o formatowaniu specyficznym dla kultury.utf8Text

result
Int32

Po powrocie utf8Text zawiera wynik pomyślnego analizowania lub niezdefiniowanej wartości w przypadku błędu.

Zwraca

truejeśli utf8Text została pomyślnie przeanalizowana; w przeciwnym razie . false

Dotyczy

TryParse(ReadOnlySpan<Byte>, Int32)

Źródło:
Int32.cs
Źródło:
Int32.cs

Próbuje przekonwertować zakres znaków UTF-8 zawierający reprezentację ciągu liczby na odpowiednik 32-bitowej liczby całkowitej ze znakiem.

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

Parametry

utf8Text
ReadOnlySpan<Byte>

Zakres zawierający znaki UTF-8 reprezentujące liczbę do przekonwertowania.

result
Int32

Gdy ta metoda zostanie zwrócona, zawiera wartość całkowitą z podpisem 32-bitowym równoważną liczbie zawartej w utf8Text przypadku pomyślnej konwersji lub zero, jeśli konwersja nie powiodła się. Ten parametr jest przekazywany jako niezainicjowany; każda wartość pierwotnie dostarczona w wyniku zostanie zastąpiona.

Zwraca

true jeśli utf8Text pomyślnie została przekonwertowana; w przeciwnym razie false.

Dotyczy

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

Źródło:
Int32.cs
Źródło:
Int32.cs
Źródło:
Int32.cs

Konwertuje reprezentację zakresu liczby w określonym stylu i formacie specyficznym dla kultury na odpowiednik liczby całkowitej ze znakiem 32-bitowym. Wartość zwracana wskazuje, czy konwersja zakończyła się pomyślnie.

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, [Runtime::InteropServices::Out] int % result) = System::Numerics::INumberBase<int>::TryParse;
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

Parametry

s
ReadOnlySpan<Char>

Zakres zawierający znaki reprezentujące liczbę do przekonwertowania. Zakres jest interpretowany przy użyciu stylu określonego przez style.

style
NumberStyles

Bitowa kombinacja wartości wyliczenia, która wskazuje elementy stylu, które mogą być obecne w obiekcie s. Typową wartością do określenia jest Integer.

provider
IFormatProvider

Obiekt, który dostarcza informacje o formatowaniu specyficznym dla kultury.s

result
Int32

Gdy ta metoda zostanie zwrócona, zawiera 32-bitową liczbę całkowitą z podpisem równoważną liczbie zawartej w smetodzie , jeśli konwersja zakończyła się pomyślnie lub zero, jeśli konwersja nie powiodła się. Konwersja kończy się niepowodzeniem, jeśli s parametr ma null wartość lub Empty, nie jest w formacie zgodnym z parametrem stylelub reprezentuje liczbę mniejszą niż Int32.MinValue lub większą niż Int32.MaxValue. Ten parametr jest przekazywany jako niezainicjowany; każda wartość pierwotnie dostarczona w pliku result zostanie zastąpiona.

Zwraca

true jeśli s pomyślnie została przekonwertowana; w przeciwnym razie false.

Dotyczy

TryParse(String, NumberStyles, IFormatProvider, Int32)

Źródło:
Int32.cs
Źródło:
Int32.cs
Źródło:
Int32.cs

Konwertuje reprezentację ciągu liczby w określonym stylu i formacie specyficznym dla kultury na odpowiednik 32-bitowej liczby całkowitej ze znakiem. Wartość zwracana wskazuje, czy konwersja zakończyła się pomyślnie.

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

Parametry

s
String

Ciąg zawierający liczbę, która ma zostać przekształcona. Ciąg jest interpretowany przy użyciu stylu określonego przez style.

style
NumberStyles

Bitowa kombinacja wartości wyliczenia, która wskazuje elementy stylu, które mogą być obecne w obiekcie s. Typową wartością do określenia jest Integer.

provider
IFormatProvider

Obiekt, który dostarcza informacje o formatowaniu specyficznym dla kultury.s

result
Int32

Gdy ta metoda zostanie zwrócona, zawiera 32-bitową liczbę całkowitą z podpisem równoważną liczbie zawartej w smetodzie , jeśli konwersja zakończyła się pomyślnie lub zero, jeśli konwersja nie powiodła się. Konwersja kończy się niepowodzeniem, jeśli s parametr ma null wartość lub Empty, nie jest w formacie zgodnym z parametrem stylelub reprezentuje liczbę mniejszą niż Int32.MinValue lub większą niż Int32.MaxValue. Ten parametr jest przekazywany jako niezainicjowany; każda wartość pierwotnie dostarczona w pliku result zostanie zastąpiona.

Zwraca

true jeśli s pomyślnie została przekonwertowana; w przeciwnym razie false.

Wyjątki

style nie jest wartością NumberStyles .

-lub-

style nie jest kombinacją AllowHexSpecifier wartości i HexNumber .

Przykłady

Poniższy przykład wywołuje metodę Int32.TryParse(String, NumberStyles, IFormatProvider, Int32) z wieloma różnymi ciągami i NumberStyles wartościami.

using namespace System;
using namespace System::Globalization;

void CallTryParse(String^ stringToConvert, NumberStyles styles)
{
      Int32 number;
      CultureInfo^ provider;

      // If currency symbol is allowed, use en-US culture. 
      if (((Int32) (styles & NumberStyles::AllowCurrencySymbol)) > 0)
         provider = gcnew CultureInfo("en-US");
      else
         provider = CultureInfo::InvariantCulture;

      bool result = Int32::TryParse(stringToConvert, styles, 
                                   provider, number);
      if (result)
         Console::WriteLine("Converted '{0}' to {1}.", stringToConvert, number);
      else
         Console::WriteLine("Attempted conversion of '{0}' failed.", 
                           Convert::ToString(stringToConvert));
}

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);      
      Console::ReadLine();
}
// The example displays the following output:
//      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.
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.

Uwagi

Metoda jest podobna TryParse do Parse metody, z wyjątkiem TryParse metody nie zgłasza wyjątku, jeśli konwersja nie powiedzie się. Eliminuje to konieczność użycia obsługi wyjątków do testowania dla FormatException zdarzenia, które s jest nieprawidłowe i nie można go przeanalizować pomyślnie.

Parametr style definiuje elementy stylu (takie jak biały znak lub znak dodatni lub ujemny), które są dozwolone w parametrze s , aby operacja analizy zakończyła się powodzeniem. Musi być kombinacją flag bitowych z wyliczenia NumberStyles . W zależności od wartości parametr może styles zawierać następujące elementy:

[odstęp][$][znak][cyfry,]cyfry[.cyfry_ułamkowe][e[znak]cyfry][odstęp]

Lub, jeśli style parametr zawiera AllowHexSpecifier:

[odstęp]cyfry_szesnastkowe[odstęp]

Elementy w nawiasach kwadratowych ([ i ]) są opcjonalne. W tabeli poniżej opisano każdy element.

Element Opis
Ws Opcjonalny odstęp. Białe znaki mogą pojawić się na początku s , jeśli style zawiera flagę NumberStyles.AllowLeadingWhite lub na końcu s , jeśli style zawiera flagę NumberStyles.AllowTrailingWhite .
$ Symbol waluty specyficzny dla kultury. Jego pozycja w ciągu jest definiowana przez CurrencyPositivePattern właściwość NumberFormatInfo obiektu zwróconego przez GetFormat metodę parametru provider . Symbol waluty może pojawić się, s jeśli style zawiera flagę NumberStyles.AllowCurrencySymbol .
sign Opcjonalny znak. Symbol znaku może pojawić się, s jeśli style zawiera flagi NumberStyles.AllowLeadingSign lub NumberStyles.AllowTrailingSign .
Cyfr Sekwencja cyfr od 0 do 9.
, Separator tysięcy specyficzny dla kultury. Separator tysięcy kultury określonej przez provider może pojawić się, s jeśli style zawiera flagę NumberStyles.AllowThousands .
. Symbol dziesiętny specyficzny dla kultury. Symbol punktu dziesiętnego kultury określonej przez provider może pojawić się, s jeśli style zawiera flagę NumberStyles.AllowDecimalPoint .
fractional_digits Jedno lub więcej wystąpień cyfry 0. Cyfry ułamkowe mogą być wyświetlane tylko wtedy s , gdy style zawiera flagę NumberStyles.AllowDecimalPoint .
E Znak „e” lub „E”, który wskazuje, że wartość jest reprezentowana w zapisie wykładniczym. Parametr s może reprezentować liczbę w notacji wykładniczej, jeśli style zawiera flagę NumberStyles.AllowExponent .
hexdigits Sekwencja cyfr szesnastkowych od 0 do f lub od 0 do F.

Uwaga

Wszelkie znaki zakończenia NUL (U+0000) w obiekcie s są ignorowane przez operację analizowania, niezależnie od wartości argumentu style .

Ciąg z cyframi dziesiętnymi (odpowiadający NumberStyles.None flagi) zawsze jest analizowanych pomyślnie. Większość pozostałych NumberStyles elementów członkowskich kontroluje elementy, które mogą być, ale nie muszą być obecne w tym ciągu wejściowym. Poniższa tabela wskazuje, jak poszczególne NumberStyles elementy członkowskie wpływają na elementy, które mogą być obecne w elemecie s.

Niezłożone wartości wyliczenia NumberStyles Dodatkowe (poza cyframi) elementy dozwolone w parametrze s
NumberStyles.None Tylko cyfry dziesiętne.
NumberStyles.AllowDecimalPoint Elementy dziesiętne (.) i fractional_digits . Jednak fractional_digits musi składać się tylko z co najmniej jednej cyfry lub metody zwraca wartość false.
NumberStyles.AllowExponent Parametr s może również używać notacji wykładniczej. Jeśli s reprezentuje liczbę w notacji wykładniczej, musi reprezentować liczbę całkowitą w zakresie Int32 typu danych bez składnika ułamkowego bez zera.
NumberStyles.AllowLeadingWhite Element ws na początku s.
NumberStyles.AllowTrailingWhite Element ws na końcu selementu .
NumberStyles.AllowLeadingSign Znak może pojawić się przed cyframi.
NumberStyles.AllowTrailingSign Znak może pojawić się po cyfrach.
NumberStyles.AllowParentheses Element znaku w postaci nawiasów otaczających wartość liczbową.
NumberStyles.AllowThousands Element separatora tysięcy (,).
NumberStyles.AllowCurrencySymbol Element $ .
NumberStyles.Currency Wszystkie elementy. Parametr s nie może reprezentować liczby szesnastkowej ani liczby w notacji wykładniczej.
NumberStyles.Float Element ws na początku lub na końcu s, znak na początku s, i symbol dziesiętny (.). Parametr s może również używać notacji wykładniczej.
NumberStyles.Number Elementy ws, sign, thousands separator (,) i dziesiętne (.).
NumberStyles.Any Wszystkie style, z wyjątkiem s nie mogą reprezentować liczby szesnastkowej.

Jeśli flaga NumberStyles.AllowHexSpecifier jest używana, s musi być wartością szesnastkową bez prefiksu. Na przykład "C9AF3" analizuje się pomyślnie, ale "0xC9AF3" nie. Jedynymi innymi flagami, które mogą być obecne, styleNumberStyles.AllowLeadingWhite i NumberStyles.AllowTrailingWhite. (Wyliczenie NumberStyles ma styl złożony, NumberStyles.HexNumber, który zawiera obie flagi odstępu).

Parametr provider jest implementacją IFormatProvider , taką jak CultureInfo obiekt lub NumberFormatInfo obiekt, którego GetFormat metoda zwraca NumberFormatInfo obiekt. Obiekt NumberFormatInfo udostępnia informacje specyficzne dla kultury dotyczące formatu .s Jeśli provider jest to null, NumberFormatInfo używany jest obiekt bieżącej kultury.

Zobacz też

Dotyczy