Bagikan melalui


Int32.TryParse Metode

Definisi

Mengonversi representasi string dari angka ke bilangan bulat bertanda 32-bit yang setara. Nilai pengembalian menunjukkan apakah operasi berhasil.

Overload

TryParse(String, IFormatProvider, Int32)

Mencoba mengurai string ke dalam nilai.

TryParse(ReadOnlySpan<Char>, Int32)

Mengonversi representasi rentang angka dalam format khusus budaya ke bilangan bulat bertanda 32-bit yang setara. Nilai pengembalian menunjukkan apakah konversi berhasil.

TryParse(String, Int32)

Mengonversi representasi string dari angka ke bilangan bulat bertanda 32-bit yang setara. Nilai pengembalian menunjukkan apakah konversi berhasil.

TryParse(ReadOnlySpan<Byte>, IFormatProvider, Int32)

Mencoba mengurai rentang karakter UTF-8 ke dalam nilai.

TryParse(ReadOnlySpan<Char>, IFormatProvider, Int32)

Mencoba mengurai rentang karakter menjadi nilai.

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

Mencoba mengurai rentang karakter UTF-8 ke dalam nilai.

TryParse(ReadOnlySpan<Byte>, Int32)

Mencoba mengonversi rentang karakter UTF-8 yang berisi representasi string angka ke bilangan bulat bertanda 32-bit yang setara.

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

Mengonversi representasi rentang angka dalam gaya tertentu dan format khusus budaya ke bilangan bulat bertanda tangan 32-bit yang setara. Nilai pengembalian menunjukkan apakah konversi berhasil.

TryParse(String, NumberStyles, IFormatProvider, Int32)

Mengonversi representasi string angka dalam gaya tertentu dan format khusus budaya ke bilangan bulat bertanda 32-bit yang setara. Nilai pengembalian menunjukkan apakah konversi berhasil.

TryParse(String, IFormatProvider, Int32)

Sumber:
Int32.cs
Sumber:
Int32.cs
Sumber:
Int32.cs

Mencoba mengurai string ke dalam nilai.

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

Parameter

s
String

String yang akan diurai.

provider
IFormatProvider

Objek yang menyediakan informasi pemformatan khusus budaya tentang s.

result
Int32

Ketika metode ini kembali, berisi hasil dari penguraian s yang berhasil atau nilai yang tidak terdefinisi pada kegagalan.

Mengembalikan

true jika s berhasil diurai; jika tidak, false.

Berlaku untuk

TryParse(ReadOnlySpan<Char>, Int32)

Sumber:
Int32.cs
Sumber:
Int32.cs
Sumber:
Int32.cs

Mengonversi representasi rentang angka dalam format khusus budaya ke bilangan bulat bertanda 32-bit yang setara. Nilai pengembalian menunjukkan apakah konversi berhasil.

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

Parameter

s
ReadOnlySpan<Char>

Rentang yang berisi karakter yang mewakili angka yang akan dikonversi.

result
Int32

Ketika metode ini kembali, berisi nilai bilangan bulat bertanda tangan 32-bit yang setara dengan angka yang terkandung dalam s, jika konversi berhasil, atau nol jika konversi gagal. Konversi gagal jika parameter snull atau Empty atau mewakili angka yang kurang dari int32.MinValue atau lebih besar dari Int32.MaxValue. Parameter ini diteruskan tanpa diinisialisasi; nilai apa pun yang awalnya disediakan dalam result akan ditimpa.

Mengembalikan

true jika s berhasil dikonversi; jika tidak, false.

Berlaku untuk

TryParse(String, Int32)

Sumber:
Int32.cs
Sumber:
Int32.cs
Sumber:
Int32.cs

Mengonversi representasi string dari angka ke bilangan bulat bertanda 32-bit yang setara. Nilai pengembalian menunjukkan apakah konversi berhasil.

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

Parameter

s
String

String yang berisi angka yang akan dikonversi.

result
Int32

Ketika metode ini kembali, berisi nilai bilangan bulat bertanda tangan 32-bit yang setara dengan angka yang terkandung dalam s, jika konversi berhasil, atau nol jika konversi gagal. Konversi gagal jika parameter snull atau Empty, bukan format yang benar, atau mewakili angka yang kurang dari int32.MinValue atau lebih besar dari Int32.MaxValue. Parameter ini diteruskan tanpa diinisialisasi; nilai apa pun yang awalnya disediakan dalam result akan ditimpa.

Mengembalikan

true jika s berhasil dikonversi; jika tidak, false.

Contoh

Contoh berikut memanggil metode Int32.TryParse(String, Int32) dengan sejumlah nilai string yang berbeda.

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.

Beberapa string yang tidak dapat dikonversi oleh metode TryParse(String, Int32) dalam contoh ini adalah:

  • "9432.0". Konversi gagal karena string tidak boleh berisi pemisah desimal; harus berisi digit integral saja.

  • "16,667". Konversi gagal karena string tidak dapat berisi pemisah grup; harus berisi digit integral saja.

  • "(100)". Konversi gagal karena string tidak dapat berisi tanda negatif selain yang ditentukan oleh properti NumberFormatInfo.NegativeSign dan NumberFormatInfo.NumberNegativePattern budaya saat ini.

  • "01FA". Konversi gagal karena string tidak boleh berisi digit heksadesimal; harus berisi digit desimal saja.

Keterangan

Metode TryParse seperti metode Parse, kecuali metode TryParse tidak memberikan pengecualian jika konversi gagal. Ini menghilangkan kebutuhan untuk menggunakan penanganan pengecualian untuk menguji FormatException jika s tidak valid dan tidak dapat berhasil diurai.

Parameter s berisi sejumlah formulir:

[ws] [sign]digits[ws]

Item dalam tanda kurung siku ([ dan ]) bersifat opsional. Tabel berikut ini menjelaskan setiap elemen.

Elemen Deskripsi
ws Spasi kosong opsional.
tanda tangan Tanda opsional.
digit Urutan digit mulai dari 0 hingga 9.

Parameter s ditafsirkan menggunakan gaya NumberStyles.Integer. Selain digit desimal, hanya spasi di depan dan belakang bersama dengan tanda di depan yang diizinkan. Untuk secara eksplisit menentukan elemen gaya bersama dengan informasi pemformatan khusus budaya yang dapat ada di s, gunakan metode Int32.TryParse(String, NumberStyles, IFormatProvider, Int32).

Parameter s diurai menggunakan informasi pemformatan dalam objek NumberFormatInfo yang diinisialisasi untuk budaya sistem saat ini. Untuk informasi selengkapnya, lihat CurrentInfo.

Kelebihan metode TryParse ini menginterpretasikan semua digit dalam parameter s sebagai digit desimal. Untuk mengurai representasi string dari nomor heksadesimal, panggil Int32.TryParse(String, NumberStyles, IFormatProvider, Int32) kelebihan beban.

Lihat juga

Berlaku untuk

TryParse(ReadOnlySpan<Byte>, IFormatProvider, Int32)

Sumber:
Int32.cs
Sumber:
Int32.cs

Mencoba mengurai rentang karakter UTF-8 ke dalam nilai.

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

Parameter

utf8Text
ReadOnlySpan<Byte>

Rentang karakter UTF-8 untuk diurai.

provider
IFormatProvider

Objek yang menyediakan informasi pemformatan khusus budaya tentang utf8Text.

result
Int32

Saat dikembalikan, berisi hasil dari penguraian utf8Text yang berhasil atau nilai yang tidak terdefinisi pada kegagalan.

Mengembalikan

true jika utf8Text berhasil diurai; jika tidak, false.

Berlaku untuk

TryParse(ReadOnlySpan<Char>, IFormatProvider, Int32)

Sumber:
Int32.cs
Sumber:
Int32.cs
Sumber:
Int32.cs

Mencoba mengurai rentang karakter menjadi nilai.

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

Parameter

s
ReadOnlySpan<Char>

Rentang karakter untuk diurai.

provider
IFormatProvider

Objek yang menyediakan informasi pemformatan khusus budaya tentang s.

result
Int32

Ketika metode ini kembali, berisi hasil penguraian yang berhasil s, atau nilai yang tidak ditentukan pada kegagalan.

Mengembalikan

true jika s berhasil diurai; jika tidak, false.

Berlaku untuk

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

Sumber:
Int32.cs
Sumber:
Int32.cs

Mencoba mengurai rentang karakter UTF-8 ke dalam nilai.

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

Parameter

utf8Text
ReadOnlySpan<Byte>

Rentang karakter UTF-8 untuk diurai.

style
NumberStyles

Kombinasi bitwise dari gaya angka yang dapat ada di utf8Text.

provider
IFormatProvider

Objek yang menyediakan informasi pemformatan khusus budaya tentang utf8Text.

result
Int32

Saat dikembalikan, berisi hasil dari penguraian utf8Text yang berhasil atau nilai yang tidak terdefinisi pada kegagalan.

Mengembalikan

true jika utf8Text berhasil diurai; jika tidak, false.

Berlaku untuk

TryParse(ReadOnlySpan<Byte>, Int32)

Sumber:
Int32.cs
Sumber:
Int32.cs

Mencoba mengonversi rentang karakter UTF-8 yang berisi representasi string angka ke bilangan bulat bertanda 32-bit yang setara.

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

Parameter

utf8Text
ReadOnlySpan<Byte>

Rentang yang berisi karakter UTF-8 yang mewakili angka yang akan dikonversi.

result
Int32

Ketika metode ini kembali, berisi nilai bilangan bulat bertanda tangan 32-bit yang setara dengan angka yang terkandung dalam utf8Text jika konversi berhasil, atau nol jika konversi gagal. Parameter ini diteruskan tanpa diinisialisasi; nilai apa pun yang awalnya disediakan dalam hasil akan ditimpa.

Mengembalikan

true jika utf8Text berhasil dikonversi; jika tidak, false.

Berlaku untuk

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

Sumber:
Int32.cs
Sumber:
Int32.cs
Sumber:
Int32.cs

Mengonversi representasi rentang angka dalam gaya tertentu dan format khusus budaya ke bilangan bulat bertanda tangan 32-bit yang setara. Nilai pengembalian menunjukkan apakah konversi berhasil.

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

Parameter

s
ReadOnlySpan<Char>

Rentang yang berisi karakter yang mewakili angka yang akan dikonversi. Rentang ditafsirkan menggunakan gaya yang ditentukan oleh style.

style
NumberStyles

Kombinasi bitwise dari nilai enumerasi yang menunjukkan elemen gaya yang dapat ada di s. Nilai umum yang akan ditentukan adalah Integer.

provider
IFormatProvider

Objek yang memasok informasi pemformatan khusus budaya tentang s.

result
Int32

Ketika metode ini kembali, berisi nilai bilangan bulat bertanda tangan 32-bit yang setara dengan angka yang terkandung dalam s, jika konversi berhasil, atau nol jika konversi gagal. Konversi gagal jika parameter snull atau Empty, tidak sesuai format dengan style, atau mewakili angka yang kurang dari int32.MinValue atau lebih besar dari Int32.MaxValue. Parameter ini diteruskan tanpa diinisialisasi; nilai apa pun yang awalnya disediakan dalam result akan ditimpa.

Mengembalikan

true jika s berhasil dikonversi; jika tidak, false.

Berlaku untuk

TryParse(String, NumberStyles, IFormatProvider, Int32)

Sumber:
Int32.cs
Sumber:
Int32.cs
Sumber:
Int32.cs

Mengonversi representasi string angka dalam gaya tertentu dan format khusus budaya ke bilangan bulat bertanda 32-bit yang setara. Nilai pengembalian menunjukkan apakah konversi berhasil.

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

Parameter

s
String

String yang berisi angka yang akan dikonversi. String ditafsirkan menggunakan gaya yang ditentukan oleh style.

style
NumberStyles

Kombinasi bitwise dari nilai enumerasi yang menunjukkan elemen gaya yang dapat ada di s. Nilai umum yang akan ditentukan adalah Integer.

provider
IFormatProvider

Objek yang memasok informasi pemformatan khusus budaya tentang s.

result
Int32

Ketika metode ini kembali, berisi nilai bilangan bulat bertanda tangan 32-bit yang setara dengan angka yang terkandung dalam s, jika konversi berhasil, atau nol jika konversi gagal. Konversi gagal jika parameter snull atau Empty, tidak sesuai format dengan style, atau mewakili angka yang kurang dari int32.MinValue atau lebih besar dari Int32.MaxValue. Parameter ini diteruskan tanpa diinisialisasi; nilai apa pun yang awalnya disediakan dalam result akan ditimpa.

Mengembalikan

true jika s berhasil dikonversi; jika tidak, false.

Pengecualian

style bukan nilai NumberStyles.

-atau-

style bukan kombinasi nilai AllowHexSpecifier dan HexNumber.

Contoh

Contoh berikut memanggil metode Int32.TryParse(String, NumberStyles, IFormatProvider, Int32) dengan sejumlah string dan nilai NumberStyles yang berbeda.

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.

Keterangan

Metode TryParse seperti metode Parse, kecuali metode TryParse tidak memberikan pengecualian jika konversi gagal. Ini menghilangkan kebutuhan untuk menggunakan penanganan pengecualian untuk menguji FormatException jika s tidak valid dan tidak dapat diurai dengan sukses.

Parameter style menentukan elemen gaya (seperti spasi kosong atau tanda positif atau negatif) yang diizinkan dalam parameter s agar operasi penguraian berhasil. Ini harus merupakan kombinasi bendera bit dari enumerasi NumberStyles. Bergantung pada nilai style, parameter s dapat mencakup elemen berikut:

[ws] [$] [tanda tangan] [digits,]digits[.fractional_digits][e[sign]digits][ws]

Atau, jika parameter style mencakup AllowHexSpecifier:

[ws]hexdigits[ws]

Item dalam tanda kurung siku ([ dan ]) bersifat opsional. Tabel berikut ini menjelaskan setiap elemen.

Elemen Deskripsi
ws Spasi kosong opsional. Spasi kosong dapat muncul di awal s jika style menyertakan bendera NumberStyles.AllowLeadingWhite, atau di akhir s jika style menyertakan bendera NumberStyles.AllowTrailingWhite.
$ Simbol mata uang khusus budaya. Posisinya dalam string didefinisikan oleh properti CurrencyPositivePattern objek NumberFormatInfo yang dikembalikan oleh metode GetFormat parameter provider. Simbol mata uang dapat muncul dalam s jika style menyertakan bendera NumberStyles.AllowCurrencySymbol.
tanda tangan Tanda opsional. Simbol tanda dapat muncul di s jika style menyertakan bendera NumberStyles.AllowLeadingSign atau NumberStyles.AllowTrailingSign.
digit Urutan digit dari 0 hingga 9.
, Pemisah ribuan khusus budaya. Pemisah ribuan budaya yang ditentukan oleh provider dapat muncul di s jika style menyertakan bendera NumberStyles.AllowThousands.
. Simbol titik desimal khusus budaya. Simbol titik desimal budaya yang ditentukan oleh provider dapat muncul di s jika style menyertakan bendera NumberStyles.AllowDecimalPoint.
fractional_digits Satu atau beberapa kemunculan digit 0. Digit pecahan dapat muncul di s hanya jika style menyertakan bendera NumberStyles.AllowDecimalPoint.
e Karakter 'e' atau 'E', yang menunjukkan bahwa nilai diwakili dalam notasi eksponensial. Parameter s dapat mewakili angka dalam notasi eksponensial jika style menyertakan bendera NumberStyles.AllowExponent.
hexdigits Urutan digit heksadesimal dari 0 hingga f, atau 0 hingga F.

Nota

Karakter NUL (U+0000) yang mengakhiri di s diabaikan oleh operasi penguraian, terlepas dari nilai argumen style.

String dengan digit desimal saja (yang sesuai dengan bendera NumberStyles.None) selalu berhasil diurai. Sebagian besar elemen kontrol anggota NumberStyles yang tersisa yang mungkin tetapi tidak diperlukan untuk hadir dalam string input ini. Tabel berikut menunjukkan bagaimana anggota NumberStyles individu memengaruhi elemen yang mungkin ada di s.

Nilai NumberStyles non-komposit Elemen yang diizinkan dalam s selain digit
NumberStyles.None Digit desimal saja.
NumberStyles.AllowDecimalPoint Titik desimal (.) dan elemen fractional_digits. Namun, fractional_digits hanya boleh terdiri dari satu atau lebih 0 digit atau metode mengembalikan false.
NumberStyles.AllowExponent Parameter s juga dapat menggunakan notasi eksponensial. Jika s mewakili angka dalam notasi eksponensial, angka tersebut harus mewakili bilangan bulat dalam rentang jenis data Int32 tanpa komponen pecahan bukan nol.
NumberStyles.AllowLeadingWhite Elemen ws di awal s.
NumberStyles.AllowTrailingWhite Elemen ws di akhir .
NumberStyles.AllowLeadingSign Tanda dapat muncul sebelum digit.
NumberStyles.AllowTrailingSign Tanda dapat muncul setelah digit.
NumberStyles.AllowParentheses Elemen tanda dalam bentuk tanda kurung yang mencakup nilai numerik.
NumberStyles.AllowThousands Pemisah ribuan ( elemen,).
NumberStyles.AllowCurrencySymbol Elemen $.
NumberStyles.Currency Semua elemen. Parameter s tidak dapat mewakili angka heksadesimal atau angka dalam notasi eksponensial.
NumberStyles.Float Elemen ws di awal atau akhir , menandatangani di awal , dan simbol titik desimal (.). Parameter s juga dapat menggunakan notasi eksponensial.
NumberStyles.Number Tanda ws, tanda , pemisah ribuan (,), dan elemen titik desimal (.).
NumberStyles.Any Semua gaya, kecuali s tidak dapat mewakili angka heksadesimal.

Jika bendera NumberStyles.AllowHexSpecifier digunakan, s harus berupa nilai heksadesimal tanpa awalan. Misalnya, "C9AF3" berhasil mengurai, tetapi "0xC9AF3" tidak. Satu-satunya bendera lain yang dapat hadir di style adalah NumberStyles.AllowLeadingWhite dan NumberStyles.AllowTrailingWhite. (Enumerasi NumberStyles memiliki gaya komposit, NumberStyles.HexNumber, yang mencakup kedua bendera spasi putih.)

Parameter provider adalah implementasi IFormatProvider, seperti objek CultureInfo atau objek NumberFormatInfo, yang metode GetFormat-nya mengembalikan objek NumberFormatInfo. Objek NumberFormatInfo menyediakan informasi khusus budaya tentang format s. Jika providernull, objek NumberFormatInfo untuk budaya saat ini digunakan.

Lihat juga

Berlaku untuk