Поделиться через


UInt32.TryParse Метод

Определение

Пытается преобразовать строковое представление числа в 32-разрядное целое число без знака. Возвращаемое значение указывает, выполнено ли преобразование успешно или завершилось сбоем.

Перегрузки

Имя Описание
TryParse(ReadOnlySpan<Byte>, IFormatProvider, UInt32)

Пытается проанализировать диапазон символов UTF-8 в значение.

TryParse(ReadOnlySpan<Char>, UInt32)

Пытается преобразовать представление диапазона числа в 32-разрядное целое число без знака. Возвращаемое значение указывает, выполнено ли преобразование успешно или завершилось сбоем.

TryParse(String, UInt32)

Пытается преобразовать строковое представление числа в 32-разрядное целое число без знака. Возвращаемое значение указывает, выполнено ли преобразование успешно или завершилось сбоем.

TryParse(ReadOnlySpan<Char>, IFormatProvider, UInt32)

Пытается проанализировать диапазон символов в значение.

TryParse(String, IFormatProvider, UInt32)

Пытается проанализировать строку в значение.

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

Пытается проанализировать диапазон символов UTF-8 в значение.

TryParse(ReadOnlySpan<Byte>, UInt32)

Пытается преобразовать диапазон символов UTF-8, содержащий строковое представление числа в его 32-разрядное целое число без знака.

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

Пытается преобразовать представление диапазона числа в указанном стиле и формате языка и региональных параметров в его 32-разрядный целочисленный эквивалент без знака. Возвращаемое значение указывает, выполнено ли преобразование успешно или завершилось сбоем.

TryParse(String, NumberStyles, IFormatProvider, UInt32)

Пытается преобразовать строковое представление числа в указанном стиле и формате языка и региональных параметров в его 32-разрядный целочисленный целочисленный эквивалент без знака. Возвращаемое значение указывает, выполнено ли преобразование успешно или завершилось сбоем.

TryParse(ReadOnlySpan<Byte>, IFormatProvider, UInt32)

Исходный код:
UInt32.cs
Исходный код:
UInt32.cs
Исходный код:
UInt32.cs
Исходный код:
UInt32.cs

Пытается проанализировать диапазон символов UTF-8 в значение.

public:
 static bool TryParse(ReadOnlySpan<System::Byte> utf8Text, IFormatProvider ^ provider, [Runtime::InteropServices::Out] System::UInt32 % result) = IUtf8SpanParsable<System::UInt32>::TryParse;
public static bool TryParse(ReadOnlySpan<byte> utf8Text, IFormatProvider? provider, out uint result);
static member TryParse : ReadOnlySpan<byte> * IFormatProvider * uint32 -> bool
Public Shared Function TryParse (utf8Text As ReadOnlySpan(Of Byte), provider As IFormatProvider, ByRef result As UInteger) As Boolean

Параметры

utf8Text
ReadOnlySpan<Byte>

Диапазон символов UTF-8 для анализа.

provider
IFormatProvider

Объект, предоставляющий сведения о форматировании, зависящее от utf8Textязыка и региональных параметров.

result
UInt32

При возврате содержит результат успешного анализа utf8Text или неопределенного значения при сбое.

Возвращаемое значение

true Значение , если utf8Text был успешно проанализирован; в противном случае false.

Применяется к

TryParse(ReadOnlySpan<Char>, UInt32)

Исходный код:
UInt32.cs
Исходный код:
UInt32.cs
Исходный код:
UInt32.cs
Исходный код:
UInt32.cs
Исходный код:
UInt32.cs

Внимание

Этот API несовместим с CLS.

Пытается преобразовать представление диапазона числа в 32-разрядное целое число без знака. Возвращаемое значение указывает, выполнено ли преобразование успешно или завершилось сбоем.

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

Параметры

s
ReadOnlySpan<Char>

Диапазон, содержащий символы, представляющие число для преобразования.

result
UInt32

При возврате этого метода содержит 32-разрядное целое число без знака, эквивалентное числу, содержаемого в s, если преобразование выполнено успешно, или ноль, если преобразование завершилось ошибкой. Преобразование завершается ошибкой, если s параметр имеет null или Emptyне соответствует правильному формату или представляет число, которое меньше UInt32.MinValue или больше UInt32.MaxValue. Этот параметр передается неинициализирован; любое исходное result значение будет перезаписан.

Возвращаемое значение

true Значение , если s оно было успешно преобразовано; в противном случае false.

Атрибуты

Применяется к

TryParse(String, UInt32)

Исходный код:
UInt32.cs
Исходный код:
UInt32.cs
Исходный код:
UInt32.cs
Исходный код:
UInt32.cs
Исходный код:
UInt32.cs

Внимание

Этот API несовместим с CLS.

Альтернативный вариант, совместимый с CLS
System.Int64.TryParse(String, Int64)

Пытается преобразовать строковое представление числа в 32-разрядное целое число без знака. Возвращаемое значение указывает, выполнено ли преобразование успешно или завершилось сбоем.

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

Параметры

s
String

Строка, представляющая число для преобразования.

result
UInt32

При возврате этого метода содержит 32-разрядное целое число без знака, эквивалентное числу, содержаемого в s, если преобразование выполнено успешно, или ноль, если преобразование завершилось ошибкой. Преобразование завершается ошибкой, если s параметр имеет null или Emptyне соответствует правильному формату или представляет число, которое меньше UInt32.MinValue или больше UInt32.MaxValue. Этот параметр передается неинициализирован; любое исходное result значение будет перезаписан.

Возвращаемое значение

true Значение , если s оно было успешно преобразовано; в противном случае false.

Атрибуты

Примеры

В следующем примере метод вызывается TryParse(String, UInt32) один раз для каждого элемента в массиве строк.

string[] numericStrings = { "1293.8", "+1671.7", "28347.",  
                            "   33113684  ", "(0)", "-0", "-1", 
                            "+1293617", "18-", "119870", "31,024", 
                            "  3127094 ", "00700000" };
uint number;
foreach (string numericString in numericStrings)
{
   if (UInt32.TryParse(numericString, out number)) 
      Console.WriteLine("Converted '{0}' to {1}.", numericString, number);
   else
      Console.WriteLine("Cannot convert '{0}' to a UInt32.", numericString);
}
// The example displays the following output:
//       Cannot convert '1293.8' to a UInt32.
//       Cannot convert '+1671.7' to a UInt32.
//       Cannot convert '28347.' to a UInt32.
//       Converted '   33113684  ' to 33113684.
//       Cannot convert '(0)' to a UInt32.
//       Converted '-0' to 0.
//       Cannot convert '-1' to a UInt32.
//       Converted '+1293617' to 1293617.
//       Cannot convert '18-' to a UInt32.
//       Converted '119870' to 119870.
//       Cannot convert '31,024' to a UInt32.
//       Converted '  3127094 ' to 3127094.
//       Converted '0070000' to 70000.
let numericStrings = 
    [| "1293.8"; "+1671.7"; "28347."
       "   33113684  "; "(0)"; "-0"; "-1" 
       "+1293617"; "18-"; "119870"; "31,024" 
       "  3127094 "; "00700000" |]

for numericString in numericStrings do
    match UInt32.TryParse numericString with
    | true, number ->
        printfn $"Converted '{numericString}' to {number}."
    | _ ->
        printfn $"Cannot convert '{numericString}' to a UInt32."
// The example displays the following output:
//       Cannot convert '1293.8' to a UInt32.
//       Cannot convert '+1671.7' to a UInt32.
//       Cannot convert '28347.' to a UInt32.
//       Converted '   33113684  ' to 33113684.
//       Cannot convert '(0)' to a UInt32.
//       Converted '-0' to 0.
//       Cannot convert '-1' to a UInt32.
//       Converted '+1293617' to 1293617.
//       Cannot convert '18-' to a UInt32.
//       Converted '119870' to 119870.
//       Cannot convert '31,024' to a UInt32.
//       Converted '  3127094 ' to 3127094.
//       Converted '0070000' to 70000.
Dim numericStrings() As String = {"1293.8", "+1671.7", "28347.", 
                                  "   33113684  ", "(0)", "-0", "-1",
                                  "+1293617", "18-", "119870", 
                                  "31,024", "  3127094 ", "0070000" }
Dim number As UInteger
For Each numericString As String In numericStrings
   If UInt32.TryParse(numericString, number) Then
      Console.WriteLine("Converted '{0}' to {1}.", numericString, number)
   Else
      Console.WriteLine("Cannot convert '{0}' to a UInt32.", numericString)
   End If      
Next
' The example displays the following output:
'       Cannot convert '1293.8' to a UInt32.
'       Cannot convert '+1671.7' to a UInt32.
'       Cannot convert '28347.' to a UInt32.
'       Converted '   33113684  ' to 33113684.
'       Cannot convert '(0)' to a UInt32.
'       Converted '-0' to 0.
'       Cannot convert '-1' to a UInt32.
'       Converted '+1293617' to 1293617.
'       Cannot convert '18-' to a UInt32.
'       Converted '119870' to 119870.
'       Cannot convert '31,024' to a UInt32.
'       Converted '  3127094 ' to 3127094.
'       Converted '0070000' to 70000.

Комментарии

Метод TryParse аналогичен методу Parse, за исключением того, что он не выбрасывает исключение, если попытка преобразования завершается ошибкой. Этот метод устраняет необходимость использовать обработку исключений для FormatExceptions проверки недопустимости и не может быть успешно проанализирована.

Параметр s должен быть строковым представлением десятичного числа в следующей форме:

[ws][знак]цифры[ws]

Элементы в квадратных скобках ([ и ]) являются необязательными. В следующей таблице описан каждый элемент.

Элемент Описание
ws Необязательный пробел.
знак Необязательный знак. Допустимые символы знака определяются и свойствами NumberFormatInfo.NegativeSignNumberFormatInfo.PositiveSign текущего языка и региональных параметров.
Цифр Последовательность десятичных цифр от 0 до 9.

Параметр s интерпретируется с помощью NumberStyles.Integer стиля. Помимо десятичных цифр разрешены только начальные и конечные пробелы с начальным знаком. Чтобы явно определить элементы стиля с информацией о форматировании, зависящей от языка и региональных параметров, которые могут присутствовать в sметоде TryParse(String, NumberStyles, IFormatProvider, UInt32) , вызовите этот метод.

Заметка

Строка, указанная параметром s , не может содержать разделители групп или десятичный разделитель, и она не может иметь дробную часть.

Параметр s анализируется с помощью сведений о форматировании в объекте для текущего NumberFormatInfo языка и региональных параметров системы. Дополнительные сведения см. в разделе NumberFormatInfo.CurrentInfo.

Эта перегрузка интерпретирует все цифры в параметре s как десятичные цифры. Чтобы проанализировать строковое представление шестнадцатеричного числа, вызовите перегрузку TryParse(String, NumberStyles, IFormatProvider, UInt32) .

См. также раздел

Применяется к

TryParse(ReadOnlySpan<Char>, IFormatProvider, UInt32)

Исходный код:
UInt32.cs
Исходный код:
UInt32.cs
Исходный код:
UInt32.cs
Исходный код:
UInt32.cs
Исходный код:
UInt32.cs

Пытается проанализировать диапазон символов в значение.

public:
 static bool TryParse(ReadOnlySpan<char> s, IFormatProvider ^ provider, [Runtime::InteropServices::Out] System::UInt32 % result) = ISpanParsable<System::UInt32>::TryParse;
public static bool TryParse(ReadOnlySpan<char> s, IFormatProvider? provider, out uint result);
static member TryParse : ReadOnlySpan<char> * IFormatProvider * uint32 -> bool
Public Shared Function TryParse (s As ReadOnlySpan(Of Char), provider As IFormatProvider, ByRef result As UInteger) As Boolean

Параметры

s
ReadOnlySpan<Char>

Диапазон символов для синтаксического анализа.

provider
IFormatProvider

Объект, предоставляющий сведения о форматировании, зависящее от sязыка и региональных параметров.

result
UInt32

При возврате этого метода содержит результат успешного анализа sили неопределенное значение при сбое.

Возвращаемое значение

true Значение , если s был успешно проанализирован; в противном случае false.

Применяется к

TryParse(String, IFormatProvider, UInt32)

Исходный код:
UInt32.cs
Исходный код:
UInt32.cs
Исходный код:
UInt32.cs
Исходный код:
UInt32.cs
Исходный код:
UInt32.cs

Пытается проанализировать строку в значение.

public:
 static bool TryParse(System::String ^ s, IFormatProvider ^ provider, [Runtime::InteropServices::Out] System::UInt32 % result) = IParsable<System::UInt32>::TryParse;
public static bool TryParse(string? s, IFormatProvider? provider, out uint result);
static member TryParse : string * IFormatProvider * uint32 -> bool
Public Shared Function TryParse (s As String, provider As IFormatProvider, ByRef result As UInteger) As Boolean

Параметры

s
String

Строка для синтаксического анализа.

provider
IFormatProvider

Объект, предоставляющий сведения о форматировании, зависящее от sязыка и региональных параметров.

result
UInt32

При возврате этого метода содержит результат успешного анализа s или неопределенного значения при сбое.

Возвращаемое значение

true Значение , если s был успешно проанализирован; в противном случае false.

Применяется к

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

Исходный код:
UInt32.cs
Исходный код:
UInt32.cs
Исходный код:
UInt32.cs
Исходный код:
UInt32.cs

Пытается проанализировать диапазон символов UTF-8 в значение.

public:
 static bool TryParse(ReadOnlySpan<System::Byte> utf8Text, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] System::UInt32 % result) = System::Numerics::INumberBase<System::UInt32>::TryParse;
public static bool TryParse(ReadOnlySpan<byte> utf8Text, System.Globalization.NumberStyles style, IFormatProvider? provider, out uint result);
static member TryParse : ReadOnlySpan<byte> * System.Globalization.NumberStyles * IFormatProvider * uint32 -> bool
Public Shared Function TryParse (utf8Text As ReadOnlySpan(Of Byte), style As NumberStyles, provider As IFormatProvider, ByRef result As UInteger) As Boolean

Параметры

utf8Text
ReadOnlySpan<Byte>

Диапазон символов UTF-8 для анализа.

style
NumberStyles

Побитовое сочетание стилей чисел, которые могут присутствовать в utf8Text.

provider
IFormatProvider

Объект, предоставляющий сведения о форматировании, зависящее от utf8Textязыка и региональных параметров.

result
UInt32

При возврате содержит результат успешного анализа utf8Text или неопределенного значения при сбое.

Возвращаемое значение

true Значение , если utf8Text был успешно проанализирован; в противном случае false.

Применяется к

TryParse(ReadOnlySpan<Byte>, UInt32)

Исходный код:
UInt32.cs
Исходный код:
UInt32.cs
Исходный код:
UInt32.cs
Исходный код:
UInt32.cs

Пытается преобразовать диапазон символов UTF-8, содержащий строковое представление числа в его 32-разрядное целое число без знака.

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

Параметры

utf8Text
ReadOnlySpan<Byte>

Диапазон, содержащий символы UTF-8, представляющие число для преобразования.

result
UInt32

При возврате этого метода содержит 32-разрядное целое число без знака, эквивалентное числу, содержаемого в utf8Text случае успешного преобразования, или ноль, если преобразование завершилось ошибкой. Этот параметр передается неинициализирован; любое исходное значение, предоставленное в результате, будет перезаписан.

Возвращаемое значение

true Значение , если utf8Text оно было успешно преобразовано; в противном случае false.

Применяется к

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

Исходный код:
UInt32.cs
Исходный код:
UInt32.cs
Исходный код:
UInt32.cs
Исходный код:
UInt32.cs
Исходный код:
UInt32.cs

Внимание

Этот API несовместим с CLS.

Пытается преобразовать представление диапазона числа в указанном стиле и формате языка и региональных параметров в его 32-разрядный целочисленный эквивалент без знака. Возвращаемое значение указывает, выполнено ли преобразование успешно или завершилось сбоем.

public:
 static bool TryParse(ReadOnlySpan<char> s, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] System::UInt32 % result) = System::Numerics::INumberBase<System::UInt32>::TryParse;
public:
 static bool TryParse(ReadOnlySpan<char> s, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] System::UInt32 % result);
public static bool TryParse(ReadOnlySpan<char> s, System.Globalization.NumberStyles style, IFormatProvider? provider, out uint result);
[System.CLSCompliant(false)]
public static bool TryParse(ReadOnlySpan<char> s, System.Globalization.NumberStyles style, IFormatProvider provider, out uint result);
[System.CLSCompliant(false)]
public static bool TryParse(ReadOnlySpan<char> s, System.Globalization.NumberStyles style, IFormatProvider? provider, out uint result);
static member TryParse : ReadOnlySpan<char> * System.Globalization.NumberStyles * IFormatProvider * uint32 -> bool
[<System.CLSCompliant(false)>]
static member TryParse : ReadOnlySpan<char> * System.Globalization.NumberStyles * IFormatProvider * uint32 -> bool
Public Shared Function TryParse (s As ReadOnlySpan(Of Char), style As NumberStyles, provider As IFormatProvider, ByRef result As UInteger) As Boolean

Параметры

s
ReadOnlySpan<Char>

Диапазон, содержащий символы, представляющие число для преобразования. Диапазон интерпретируется с помощью стиля, заданного параметром style .

style
NumberStyles

Побитовое сочетание значений перечисления, указывающее допустимый формат s. Обычное значение, которое нужно указать Integer.

provider
IFormatProvider

Объект, предоставляющий сведения sо форматировании с учетом языка и региональных параметров.

result
UInt32

При возврате этого метода содержит 32-разрядное целое число без знака, эквивалентное числу, содержаемого в s, если преобразование выполнено успешно, или ноль, если преобразование завершилось ошибкой. Преобразование завершается ошибкой, если s параметр имеет null или Emptyне соответствует формату, соответствующему форматуstyle, или представляет число, которое меньше UInt32.MinValue или больше UInt32.MaxValue. Этот параметр передается неинициализирован; любое исходное result значение будет перезаписан.

Возвращаемое значение

true Значение , если s оно было успешно преобразовано; в противном случае false.

Атрибуты

Применяется к

TryParse(String, NumberStyles, IFormatProvider, UInt32)

Исходный код:
UInt32.cs
Исходный код:
UInt32.cs
Исходный код:
UInt32.cs
Исходный код:
UInt32.cs
Исходный код:
UInt32.cs

Внимание

Этот API несовместим с CLS.

Альтернативный вариант, совместимый с CLS
System.Int64.TryParse(String, Int64)

Пытается преобразовать строковое представление числа в указанном стиле и формате языка и региональных параметров в его 32-разрядный целочисленный целочисленный эквивалент без знака. Возвращаемое значение указывает, выполнено ли преобразование успешно или завершилось сбоем.

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

Параметры

s
String

Строка, представляющая число для преобразования. Строка интерпретируется с помощью стиля, заданного параметром style .

style
NumberStyles

Побитовое сочетание значений перечисления, указывающее допустимый формат s. Обычное значение, которое нужно указать Integer.

provider
IFormatProvider

Объект, предоставляющий сведения sо форматировании с учетом языка и региональных параметров.

result
UInt32

При возврате этого метода содержит 32-разрядное целое число без знака, эквивалентное числу, содержаемого в s, если преобразование выполнено успешно, или ноль, если преобразование завершилось ошибкой. Преобразование завершается ошибкой, если s параметр имеет null или Emptyне соответствует формату, соответствующему форматуstyle, или представляет число, которое меньше UInt32.MinValue или больше UInt32.MaxValue. Этот параметр передается неинициализирован; любое исходное result значение будет перезаписан.

Возвращаемое значение

true Значение , если s оно было успешно преобразовано; в противном случае false.

Атрибуты

Исключения

style значение не является значением NumberStyles .

-или-

styleне является сочетанием значений и HexNumber значенийAllowHexSpecifier.

Примеры

В следующем примере метод вызывается TryParse(String, NumberStyles, IFormatProvider, UInt32) с несколькими разными строками и NumberStyles значениями.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      string numericString;
      NumberStyles styles;
      
      numericString = "2106034";
      styles = NumberStyles.Integer;
      CallTryParse(numericString, styles);
      
      numericString = "-10603";
      styles = NumberStyles.None;
      CallTryParse(numericString, styles);
      
      numericString = "29103674.00";
      styles = NumberStyles.Integer | NumberStyles.AllowDecimalPoint;
      CallTryParse(numericString, styles);
      
      numericString = "10345.72";
      styles = NumberStyles.Integer | NumberStyles.AllowDecimalPoint;
      CallTryParse(numericString, styles);

      numericString = "41792210E-01";
      styles = NumberStyles.Integer | NumberStyles.AllowExponent;
      CallTryParse(numericString, styles); 
      
      numericString = "9112E-01";
      CallTryParse(numericString, styles);
          
      numericString = "312E01";
      CallTryParse(numericString, styles); 
      
      numericString = "FFC86DA1";
      CallTryParse(numericString, NumberStyles.HexNumber);
      
      numericString = "0x8F8C";
      CallTryParse(numericString, NumberStyles.HexNumber);
   }
   
   private static void CallTryParse(string stringToConvert, NumberStyles styles)
   {
      uint number;
      bool result = UInt32.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 '2106034' to 2106034.
//       Attempted conversion of '-10603' failed.
//       Converted '29103674.00' to 29103674.
//       Attempted conversion of '10345.72' failed.
//       Converted '41792210E-01' to 4179221.
//       Attempted conversion of '9112E-01' failed.
//       Converted '312E01' to 3120.
//       Converted 'FFC86DA1' to 4291325345.
//       Attempted conversion of '0x8F8C' failed.
open System
open System.Globalization

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

do
    let numericString = "2106034"
    let styles = NumberStyles.Integer
    callTryParse numericString styles

    let numericString = "-10603"
    let styles = NumberStyles.None
    callTryParse numericString styles

    let numericString = "29103674.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 = "41792210E-01"
    let styles = NumberStyles.Integer ||| NumberStyles.AllowExponent
    callTryParse numericString styles 

    let numericString = "9112E-01"
    callTryParse numericString styles
        
    let numericString = "312E01"
    callTryParse numericString styles 

    let numericString = "FFC86DA1"
    callTryParse numericString NumberStyles.HexNumber

    let numericString = "0x8F8C"
    callTryParse numericString NumberStyles.HexNumber
   
// The example displays the following output:
//       Converted '2106034' to 2106034.
//       Attempted conversion of '-10603' failed.
//       Converted '29103674.00' to 29103674.
//       Attempted conversion of '10345.72' failed.
//       Converted '41792210E-01' to 4179221.
//       Attempted conversion of '9112E-01' failed.
//       Converted '312E01' to 3120.
//       Converted 'FFC86DA1' to 4291325345.
//       Attempted conversion of '0x8F8C' failed.
Imports System.Globalization

Module Example
   Public Sub Main()
      Dim numericString As String
      Dim styles As NumberStyles
      
      numericString = "2106034"
      styles = NumberStyles.Integer
      CallTryParse(numericString, styles)
      
      numericString = "-10603"
      styles = NumberStyles.None
      CallTryParse(numericString, styles)
      
      numericString = "29103674.00"
      styles = NumberStyles.Integer Or NumberStyles.AllowDecimalPoint
      CallTryParse(numericString, styles)
      
      numericString = "10345.72"
      styles = NumberStyles.Integer Or NumberStyles.AllowDecimalPoint
      CallTryParse(numericString, styles)

      numericString = "41792210E-01"
      styles = NumberStyles.Integer Or NumberStyles.AllowExponent
      CallTryParse(numericString, styles) 
      
      numericString = "9112E-01"
      CallTryParse(numericString, styles)
          
      numericString = "312E01"
      CallTryParse(numericString, styles) 
      
      numericString = "FFC86DA1"
      CallTryParse(numericString, NumberStyles.HexNumber)
      
      numericString = "0x8F8C"
      CallTryParse(numericString, NumberStyles.HexNumber)
   End Sub
   
   Private Sub CallTryParse(stringToConvert As String, styles AS NumberStyles)
      Dim number As UInteger
      Dim result As Boolean = UInt32.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 '2106034' to 2106034.
'       Attempted conversion of '-10603' failed.
'       Converted '29103674.00' to 29103674.
'       Attempted conversion of '10345.72' failed.
'       Converted '41792210E-01' to 4179221.
'       Attempted conversion of '9112E-01' failed.
'       Converted '312E01' to 3120.
'       Converted 'FFC86DA1' to 4291325345.
'       Attempted conversion of '0x8F8C' failed.

Комментарии

Метод TryParse(String, NumberStyles, IFormatProvider, UInt32) аналогичен методу Parse(String, NumberStyles, IFormatProvider), за исключением того, что он не выбрасывает исключение, если попытка преобразования завершается ошибкой. Этот метод устраняет необходимость использовать обработку исключений для FormatExceptions проверки недопустимого и не может быть успешно проанализирована.

Параметр style определяет элементы стиля (например, пробелы или положительный или отрицательный знак), которые разрешены в s параметре для успешной операции синтаксического анализа. Это должно быть сочетание битовых флагов из NumberStyles перечисления. В зависимости от значения styles параметр может включать следующие элементы:

[ws][$][знак][цифры,]цифры[.fractional_digits][E[sign]exponential_digits][ws]

Элементы в квадратных скобках ([ и ]) являются необязательными. Или, если параметр style включает NumberStyles.AllowHexSpecifier, s параметр может включать следующие элементы:

[ws]hexdigits[ws]

В следующей таблице описан каждый элемент.

Элемент Описание
ws Необязательный пробел. Пробел может отображаться в начале s , если style он включает NumberStyles.AllowLeadingWhite флаг или в конце s , если style этот флаг включен NumberStyles.AllowTrailingWhite .
$ Символ валюты, зависящий от языка и региональных параметров. Его положение в строке определяется CurrencyPositivePattern свойством NumberFormatInfo объекта, возвращаемого GetFormat методом provider параметра. Символ валюты может отображаться в s том случае, если style он включает NumberStyles.AllowCurrencySymbol флаг.
знак Необязательный знак. Знак может появиться в начале s , если style он включает NumberStyles.AllowLeadingSign флаг, и он может отображаться в конце s , если style он включает NumberStyles.AllowTrailingSign флаг. Скобки можно использовать для s указания отрицательного style значения, если NumberStyles.AllowParentheses он содержит флаг. Однако если отрицательный знак присутствует, s может представлять только нулевое значение для успешной операции синтаксического анализа.
Цифр Последовательность цифр от 0 до 9.
, Разделитель групп, зависящий от языка и региональных параметров. Разделитель групп, заданный provider языком и региональными параметрами, может отображаться в s том случае, если style он содержит NumberStyles.AllowThousands флаг.
. Символ десятичной запятой для конкретного языка и региональных параметров. Символ десятичной запятой языка и региональных параметров, указанный в provider нем, может отображаться в s том случае, если style он NumberStyles.AllowDecimalPoint содержит флаг.
fractional_digits Одно или несколько вхождений цифры 0. Дробные цифры могут отображаться только в s том случае, если style он содержит NumberStyles.AllowDecimalPoint флаг.
E Символ e или E, указывающий, что значение представлено в экспоненциальной (научной) нотации. Параметр s может представлять число в экспоненциальной нотации, если style он включает NumberStyles.AllowExponent флаг.
exponential_digits Последовательность цифр от 0 до 9. Параметр s может представлять число в экспоненциальной нотации, если style он включает NumberStyles.AllowExponent флаг.
hexdigits Последовательность шестнадцатеричных цифр от 0 до f или 0 до F.

Заметка

Все завершающие символы s NUL (U+0000) игнорируются операцией синтаксического анализа независимо от значения аргумента style .

Строка с десятичными цифрами (которая соответствует флагу NumberStyles.None ) всегда анализируется успешно. Большинство остальных NumberStyles элементов управления элементами управления, которые могут присутствовать, но не требуются, в этой входной строке. В следующей таблице показано, как отдельные NumberStyles элементы влияют на элементы, которые могут присутствовать в s.

Не составные NumberStyles значения Элементы, разрешенные в значении в дополнение к цифрам
None Только десятичные цифры.
AllowDecimalPoint Элементы десятичной запятой (.) и fractional_digits. Однако fractional_digits должны состоять только из одного или нескольких 0 цифр или возвращаемого falseметода.
AllowExponent Символ e или E, указывающий экспоненциальную нотацию, а также exponential_digits. Если s представляет число в экспоненциальной нотации, он не может иметь ненулевого, дробного компонента.
AllowLeadingWhite Элемент ws в начале s.
AllowTrailingWhite Элемент ws в конце s.
AllowLeadingSign Элемент sign перед цифрами.
AllowTrailingSign Элемент знака после цифр.
AllowParentheses Элемент sign в виде круглых скобок, заключающий нулевое числовое значение.
AllowThousands Элемент разделителя групп (,).
AllowCurrencySymbol Элемент валюты ($).
Currency Все элементы. s Однако не может представлять шестнадцатеричное число или число в экспоненциальной нотации.
Float Элемент ws в начале или конце s, знак в начале sи символ десятичной запятой (.). Параметр s также может использовать экспоненциальную нотацию.
Number Ws, знак, разделитель групп (,), а также элементы десятичной запятой (.).
Any Все элементы. s Однако не может представлять шестнадцатеричное число.

NumberStyles.AllowHexSpecifier Если используется флаг, s должен быть шестнадцатеричным значением. Единственные другие флаги, которые могут присутствовать в styleNumberStyles.AllowLeadingWhite них, и NumberStyles.AllowTrailingWhite. (Перечисление NumberStyles имеет составной стиль, HexNumberкоторый включает оба флага пробела.)

Заметка

Если s строковое представление шестнадцатеричного числа, оно не может предшествовать любому украшению (например 0x , или &h) которое отличает его как шестнадцатеричное число. Это приводит к сбою преобразования.

Параметр provider является реализацией IFormatProvider . Его GetFormat метод возвращает объект, предоставляющий NumberFormatInfo сведения о формате sязыка и региональных параметров. Параметр provider может быть одним из следующих вариантов:

  • Объект CultureInfo , представляющий язык и региональные параметры, предоставляющие сведения о форматировании. Его GetFormat метод возвращает NumberFormatInfo объект, предоставляющий числовые сведения о форматировании для этого языка и региональных параметров.

  • NumberFormatInfo Объект, предоставляющий числовые сведения о форматировании. (Его реализация GetFormat просто возвращается.)

  • Настраиваемый объект, реализующий IFormatProvider. Его GetFormat метод создает экземпляр и возвращает NumberFormatInfo объект, предоставляющий сведения о форматировании.

В provider противном nullNumberFormatInfo случае используется объект для текущего языка и региональных параметров.

См. также раздел

Применяется к