UInt16.TryParse Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Преобразует строковое представление числа в 16-разрядное целое число без знака. Возвращаемое значение указывает, выполнено ли преобразование успешно или завершилось сбоем.
Перегрузки
TryParse(ReadOnlySpan<Byte>, IFormatProvider, UInt16) |
Пытается проанализировать диапазон символов UTF-8 в значение. |
TryParse(ReadOnlySpan<Char>, UInt16) |
Пытается преобразовать представление диапазона числа в его 16-разрядное целое число без знака. Возвращаемое значение указывает, выполнено ли преобразование успешно или завершилось сбоем. |
TryParse(String, UInt16) |
Пытается преобразовать строковое представление числа в его 16-разрядное целое число без знака. Возвращаемое значение указывает, выполнено ли преобразование успешно или завершилось сбоем. |
TryParse(ReadOnlySpan<Char>, IFormatProvider, UInt16) |
Пытается проанализировать диапазон символов в значение. |
TryParse(String, IFormatProvider, UInt16) |
Пытается проанализировать строку в значение. |
TryParse(ReadOnlySpan<Byte>, NumberStyles, IFormatProvider, UInt16) |
Пытается проанализировать диапазон символов UTF-8 в значение. |
TryParse(ReadOnlySpan<Byte>, UInt16) |
Пытается преобразовать диапазон символов UTF-8, содержащий строковое представление числа в его 16-разрядный целочисленный эквивалент без знака. |
TryParse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider, UInt16) |
Пытается преобразовать представление диапазона числа в указанном стиле и формате языка и региональных параметров в его 16-разрядный целочисленный эквивалент без знака. Возвращаемое значение указывает, выполнено ли преобразование успешно или завершилось сбоем. |
TryParse(String, NumberStyles, IFormatProvider, UInt16) |
Пытается преобразовать строковое представление числа в указанном стиле и формате языка и региональных параметров в его 16-разрядный целочисленный эквивалент без знака. Возвращаемое значение указывает, выполнено ли преобразование успешно или завершилось сбоем. |
TryParse(ReadOnlySpan<Byte>, IFormatProvider, UInt16)
- Исходный код:
- UInt16.cs
- Исходный код:
- UInt16.cs
Пытается проанализировать диапазон символов UTF-8 в значение.
public:
static bool TryParse(ReadOnlySpan<System::Byte> utf8Text, IFormatProvider ^ provider, [Runtime::InteropServices::Out] System::UInt16 % result) = IUtf8SpanParsable<System::UInt16>::TryParse;
public static bool TryParse (ReadOnlySpan<byte> utf8Text, IFormatProvider? provider, out ushort result);
static member TryParse : ReadOnlySpan<byte> * IFormatProvider * uint16 -> bool
Public Shared Function TryParse (utf8Text As ReadOnlySpan(Of Byte), provider As IFormatProvider, ByRef result As UShort) As Boolean
Параметры
- utf8Text
- ReadOnlySpan<Byte>
Диапазон символов UTF-8 для анализа.
- provider
- IFormatProvider
Объект, предоставляющий сведения о форматировании, зависящее от языка и региональных параметров, о utf8Text
.
- result
- UInt16
При возврате содержит результат успешного анализа utf8Text
или неопределенного значения при сбое.
Возвращаемое значение
true
, если utf8Text
был успешно проанализирован; в противном случае false
.
Применяется к
TryParse(ReadOnlySpan<Char>, UInt16)
- Исходный код:
- UInt16.cs
- Исходный код:
- UInt16.cs
- Исходный код:
- UInt16.cs
Важно!
Этот API несовместим с CLS.
Пытается преобразовать представление диапазона числа в его 16-разрядное целое число без знака. Возвращаемое значение указывает, выполнено ли преобразование успешно или завершилось сбоем.
public:
static bool TryParse(ReadOnlySpan<char> s, [Runtime::InteropServices::Out] System::UInt16 % result);
public static bool TryParse (ReadOnlySpan<char> s, out ushort result);
[System.CLSCompliant(false)]
public static bool TryParse (ReadOnlySpan<char> s, out ushort result);
static member TryParse : ReadOnlySpan<char> * uint16 -> bool
[<System.CLSCompliant(false)>]
static member TryParse : ReadOnlySpan<char> * uint16 -> bool
Public Shared Function TryParse (s As ReadOnlySpan(Of Char), ByRef result As UShort) As Boolean
Параметры
- s
- ReadOnlySpan<Char>
Диапазон, содержащий символы, представляющие число для преобразования.
- result
- UInt16
При возврате этого метода содержит 16-разрядное целое число без знака, эквивалентное числу, содержаемого в s
, если преобразование выполнено успешно или ноль, если преобразование завершилось ошибкой. Преобразование завершается ошибкой, если параметр s
null
или Empty, не имеет правильного формата. или представляет число меньше UInt16.MinValue или больше UInt16.MaxValue. Этот параметр передается неинициализирован; любое исходное значение, предоставленное в result
, будет перезаписан.
Возвращаемое значение
true
, если s
был успешно преобразован; в противном случае false
.
- Атрибуты
Применяется к
TryParse(String, UInt16)
- Исходный код:
- UInt16.cs
- Исходный код:
- UInt16.cs
- Исходный код:
- UInt16.cs
Важно!
Этот API несовместим с CLS.
- Альтернативный вариант, совместимый с CLS
- System.Int32.TryParse(String, Int32)
Пытается преобразовать строковое представление числа в его 16-разрядное целое число без знака. Возвращаемое значение указывает, выполнено ли преобразование успешно или завершилось сбоем.
public:
static bool TryParse(System::String ^ s, [Runtime::InteropServices::Out] System::UInt16 % result);
[System.CLSCompliant(false)]
public static bool TryParse (string s, out ushort result);
public static bool TryParse (string? s, out ushort result);
[System.CLSCompliant(false)]
public static bool TryParse (string? s, out ushort result);
[<System.CLSCompliant(false)>]
static member TryParse : string * uint16 -> bool
static member TryParse : string * uint16 -> bool
Public Shared Function TryParse (s As String, ByRef result As UShort) As Boolean
Параметры
- s
- String
Строка, представляющая число для преобразования.
- result
- UInt16
При возврате этого метода содержит 16-разрядное целое число без знака, эквивалентное числу, содержаемого в s
, если преобразование выполнено успешно или ноль, если преобразование завершилось ошибкой. Преобразование завершается ошибкой, если параметр s
null
или Empty, не имеет правильного формата или представляет число меньше UInt16.MinValue или больше UInt16.MaxValue. Этот параметр передается неинициализирован; любое исходное значение, предоставленное в result
, будет перезаписан.
Возвращаемое значение
true
, если s
был успешно преобразован; в противном случае false
.
- Атрибуты
Примеры
В следующем примере вызывается метод TryParse(String, UInt16) один раз для каждого элемента в строковом массиве.
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(String, UInt16) похож на метод Parse(String), за исключением того, что он не создает исключение, если преобразование завершается ошибкой. Этот метод устраняет необходимость использовать обработку исключений для проверки FormatException, если s
недопустим и не может быть успешно проанализирована.
Параметр s
должен быть строковым представлением десятичного числа в следующей форме:
[ws] [знак]цифры[ws]
Элементы в квадратных скобках ([ и ]) являются необязательными. В следующей таблице описан каждый элемент.
Элемент | Описание |
---|---|
ws | Необязательный пробел. |
знак | Необязательный знак. Допустимые знаки определяются NumberFormatInfo.NegativeSign и NumberFormatInfo.PositiveSign свойствами текущего языка и региональных параметров. |
цифры | Последовательность десятичных цифр от 0 до 9. |
Заметка
Строка, указанная параметром s
, не может содержать разделители групп или десятичный разделитель, и она не может иметь десятичную часть.
Параметр s
интерпретируется с помощью стиля NumberStyles.Integer. Помимо десятичных цифр разрешены только начальные и конечные пробелы с начальным знаком. Чтобы явно определить элементы стиля с информацией о форматировании, зависящей от языка и региональных параметров, которые могут присутствовать в s
, вызовите метод TryParse(String, NumberStyles, IFormatProvider, UInt16).
Параметр s
анализируется с помощью сведений о форматировании в объекте NumberFormatInfo для текущего языка и региональных параметров системы. Дополнительные сведения см. в NumberFormatInfo.CurrentInfo.
Эта перегрузка интерпретирует все цифры в параметре s
как десятичные цифры. Чтобы проанализировать строковое представление шестнадцатеричного числа, вызовите вместо этого перегрузку TryParse(String, NumberStyles, IFormatProvider, UInt16).
См. также раздел
- Parse(String)
- ToString()
- синтаксический анализ числовых строк в .NET
- пример: служебная программа форматирования WinForms .NET Core (C#)
- пример : служебная программа форматирования WinForms .NET Core (Visual Basic)
Применяется к
TryParse(ReadOnlySpan<Char>, IFormatProvider, UInt16)
- Исходный код:
- UInt16.cs
- Исходный код:
- UInt16.cs
- Исходный код:
- UInt16.cs
Пытается проанализировать диапазон символов в значение.
public:
static bool TryParse(ReadOnlySpan<char> s, IFormatProvider ^ provider, [Runtime::InteropServices::Out] System::UInt16 % result) = ISpanParsable<System::UInt16>::TryParse;
public static bool TryParse (ReadOnlySpan<char> s, IFormatProvider? provider, out ushort result);
static member TryParse : ReadOnlySpan<char> * IFormatProvider * uint16 -> bool
Public Shared Function TryParse (s As ReadOnlySpan(Of Char), provider As IFormatProvider, ByRef result As UShort) As Boolean
Параметры
- s
- ReadOnlySpan<Char>
Диапазон символов для синтаксического анализа.
- provider
- IFormatProvider
Объект, предоставляющий сведения о форматировании, зависящее от языка и региональных параметров, о s
.
- result
- UInt16
При возврате этого метода содержит результат успешного анализа s
или неопределенное значение при сбое.
Возвращаемое значение
true
, если s
был успешно проанализирован; в противном случае false
.
Применяется к
TryParse(String, IFormatProvider, UInt16)
- Исходный код:
- UInt16.cs
- Исходный код:
- UInt16.cs
- Исходный код:
- UInt16.cs
Пытается проанализировать строку в значение.
public:
static bool TryParse(System::String ^ s, IFormatProvider ^ provider, [Runtime::InteropServices::Out] System::UInt16 % result) = IParsable<System::UInt16>::TryParse;
public static bool TryParse (string? s, IFormatProvider? provider, out ushort result);
static member TryParse : string * IFormatProvider * uint16 -> bool
Public Shared Function TryParse (s As String, provider As IFormatProvider, ByRef result As UShort) As Boolean
Параметры
- s
- String
Строка для синтаксического анализа.
- provider
- IFormatProvider
Объект, предоставляющий сведения о форматировании, зависящее от языка и региональных параметров, о s
.
- result
- UInt16
Когда этот метод возвращается, содержит результат успешного анализа s
или неопределенного значения при сбое.
Возвращаемое значение
true
, если s
был успешно проанализирован; в противном случае false
.
Применяется к
TryParse(ReadOnlySpan<Byte>, NumberStyles, IFormatProvider, UInt16)
- Исходный код:
- UInt16.cs
- Исходный код:
- UInt16.cs
Пытается проанализировать диапазон символов UTF-8 в значение.
public:
static bool TryParse(ReadOnlySpan<System::Byte> utf8Text, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] System::UInt16 % result) = System::Numerics::INumberBase<System::UInt16>::TryParse;
public static bool TryParse (ReadOnlySpan<byte> utf8Text, System.Globalization.NumberStyles style, IFormatProvider? provider, out ushort result);
static member TryParse : ReadOnlySpan<byte> * System.Globalization.NumberStyles * IFormatProvider * uint16 -> bool
Public Shared Function TryParse (utf8Text As ReadOnlySpan(Of Byte), style As NumberStyles, provider As IFormatProvider, ByRef result As UShort) As Boolean
Параметры
- utf8Text
- ReadOnlySpan<Byte>
Диапазон символов UTF-8 для анализа.
- style
- NumberStyles
Побитовое сочетание стилей чисел, которые могут присутствовать в utf8Text
.
- provider
- IFormatProvider
Объект, предоставляющий сведения о форматировании, зависящее от языка и региональных параметров, о utf8Text
.
- result
- UInt16
При возврате содержит результат успешного анализа utf8Text
или неопределенного значения при сбое.
Возвращаемое значение
true
, если utf8Text
был успешно проанализирован; в противном случае false
.
Применяется к
TryParse(ReadOnlySpan<Byte>, UInt16)
- Исходный код:
- UInt16.cs
- Исходный код:
- UInt16.cs
Пытается преобразовать диапазон символов UTF-8, содержащий строковое представление числа в его 16-разрядный целочисленный эквивалент без знака.
public:
static bool TryParse(ReadOnlySpan<System::Byte> utf8Text, [Runtime::InteropServices::Out] System::UInt16 % result);
public static bool TryParse (ReadOnlySpan<byte> utf8Text, out ushort result);
static member TryParse : ReadOnlySpan<byte> * uint16 -> bool
Public Shared Function TryParse (utf8Text As ReadOnlySpan(Of Byte), ByRef result As UShort) As Boolean
Параметры
- utf8Text
- ReadOnlySpan<Byte>
Диапазон, содержащий символы UTF-8, представляющие число для преобразования.
- result
- UInt16
При возврате этого метода содержит 16-разрядное целое число без знака, эквивалентное числу, содержаемого в utf8Text
, если преобразование выполнено успешно, или ноль, если преобразование завершилось ошибкой. Этот параметр передается неинициализирован; любое исходное значение, предоставленное в результате, будет перезаписан.
Возвращаемое значение
true
, если utf8Text
был успешно преобразован; в противном случае false
.
Применяется к
TryParse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider, UInt16)
- Исходный код:
- UInt16.cs
- Исходный код:
- UInt16.cs
- Исходный код:
- UInt16.cs
Важно!
Этот API несовместим с CLS.
Пытается преобразовать представление диапазона числа в указанном стиле и формате языка и региональных параметров в его 16-разрядный целочисленный эквивалент без знака. Возвращаемое значение указывает, выполнено ли преобразование успешно или завершилось сбоем.
public:
static bool TryParse(ReadOnlySpan<char> s, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] System::UInt16 % result);
public:
static bool TryParse(ReadOnlySpan<char> s, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] System::UInt16 % result) = System::Numerics::INumberBase<System::UInt16>::TryParse;
public static bool TryParse (ReadOnlySpan<char> s, System.Globalization.NumberStyles style, IFormatProvider? provider, out ushort result);
[System.CLSCompliant(false)]
public static bool TryParse (ReadOnlySpan<char> s, System.Globalization.NumberStyles style, IFormatProvider provider, out ushort result);
[System.CLSCompliant(false)]
public static bool TryParse (ReadOnlySpan<char> s, System.Globalization.NumberStyles style, IFormatProvider? provider, out ushort result);
static member TryParse : ReadOnlySpan<char> * System.Globalization.NumberStyles * IFormatProvider * uint16 -> bool
[<System.CLSCompliant(false)>]
static member TryParse : ReadOnlySpan<char> * System.Globalization.NumberStyles * IFormatProvider * uint16 -> bool
Public Shared Function TryParse (s As ReadOnlySpan(Of Char), style As NumberStyles, provider As IFormatProvider, ByRef result As UShort) As Boolean
Параметры
- s
- ReadOnlySpan<Char>
Диапазон, содержащий символы, представляющие число для преобразования. Диапазон интерпретируется с помощью стиля, заданного параметром style
.
- style
- NumberStyles
Побитовое сочетание значений перечисления, указывающее разрешенный формат s
. Обычное значение, указываемое, — Integer.
- provider
- IFormatProvider
Объект, предоставляющий сведения о форматировании, зависящее от языка и региональных параметров, о s
.
- result
- UInt16
При возврате этого метода содержит 16-разрядное целое число без знака, эквивалентное числу, содержаму в s
, если преобразование выполнено успешно или ноль, если преобразование завершилось ошибкой. Преобразование завершается ошибкой, если параметр s
null
или Empty, не соответствует формату style
или представляет число меньше UInt16.MinValue или больше UInt16.MaxValue. Этот параметр передается неинициализирован; любое исходное значение, предоставленное в result
, будет перезаписан.
Возвращаемое значение
true
, если s
был успешно преобразован; в противном случае false
.
- Атрибуты
Применяется к
TryParse(String, NumberStyles, IFormatProvider, UInt16)
- Исходный код:
- UInt16.cs
- Исходный код:
- UInt16.cs
- Исходный код:
- UInt16.cs
Важно!
Этот API несовместим с CLS.
- Альтернативный вариант, совместимый с CLS
- System.Int32.TryParse(String, Int32)
Пытается преобразовать строковое представление числа в указанном стиле и формате языка и региональных параметров в его 16-разрядный целочисленный эквивалент без знака. Возвращаемое значение указывает, выполнено ли преобразование успешно или завершилось сбоем.
public:
static bool TryParse(System::String ^ s, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] System::UInt16 % result);
public:
static bool TryParse(System::String ^ s, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] System::UInt16 % result) = System::Numerics::INumberBase<System::UInt16>::TryParse;
[System.CLSCompliant(false)]
public static bool TryParse (string s, System.Globalization.NumberStyles style, IFormatProvider provider, out ushort result);
public static bool TryParse (string? s, System.Globalization.NumberStyles style, IFormatProvider? provider, out ushort result);
[System.CLSCompliant(false)]
public static bool TryParse (string? s, System.Globalization.NumberStyles style, IFormatProvider? provider, out ushort result);
[<System.CLSCompliant(false)>]
static member TryParse : string * System.Globalization.NumberStyles * IFormatProvider * uint16 -> bool
static member TryParse : string * System.Globalization.NumberStyles * IFormatProvider * uint16 -> bool
Public Shared Function TryParse (s As String, style As NumberStyles, provider As IFormatProvider, ByRef result As UShort) As Boolean
Параметры
- s
- String
Строка, представляющая число для преобразования. Строка интерпретируется с помощью стиля, указанного параметром style
.
- style
- NumberStyles
Побитовое сочетание значений перечисления, указывающее разрешенный формат s
. Обычное значение, указываемое, — Integer.
- provider
- IFormatProvider
Объект, предоставляющий сведения о форматировании, зависящее от языка и региональных параметров, о s
.
- result
- UInt16
При возврате этого метода содержит 16-разрядное целое число без знака, эквивалентное числу, содержаму в s
, если преобразование выполнено успешно или ноль, если преобразование завершилось ошибкой. Преобразование завершается ошибкой, если параметр s
null
или Empty, не соответствует формату style
или представляет число меньше UInt16.MinValue или больше UInt16.MaxValue. Этот параметр передается неинициализирован; любое исходное значение, предоставленное в result
, будет перезаписан.
Возвращаемое значение
true
, если s
был успешно преобразован; в противном случае false
.
- Атрибуты
Исключения
style
не является значением NumberStyles.
-или-
style
не является сочетанием значений AllowHexSpecifier и HexNumber.
Примеры
В следующем примере вызывается метод TryParse(String, NumberStyles, IFormatProvider, UInt16) с несколькими разными строками и значениями NumberStyles.
using System;
using System.Globalization;
public class Example
{
public static void Main()
{
string numericString;
NumberStyles styles;
numericString = "10603";
styles = NumberStyles.Integer;
CallTryParse(numericString, styles);
numericString = "-10603";
styles = NumberStyles.None;
CallTryParse(numericString, styles);
numericString = "29103.00";
styles = NumberStyles.Integer | NumberStyles.AllowDecimalPoint;
CallTryParse(numericString, styles);
numericString = "10345.72";
styles = NumberStyles.Integer | NumberStyles.AllowDecimalPoint;
CallTryParse(numericString, styles);
numericString = "2210E-01";
styles = NumberStyles.Integer | NumberStyles.AllowExponent;
CallTryParse(numericString, styles);
numericString = "9112E-01";
CallTryParse(numericString, styles);
numericString = "312E01";
CallTryParse(numericString, styles);
numericString = "FFC8";
CallTryParse(numericString, NumberStyles.HexNumber);
numericString = "0x8F8C";
CallTryParse(numericString, NumberStyles.HexNumber);
}
private static void CallTryParse(string stringToConvert, NumberStyles styles)
{
ushort number;
bool result = UInt16.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 '10603' to 10603.
// Attempted conversion of '-10603' failed.
// Converted '29103.00' to 29103.
// Attempted conversion of '10345.72' failed.
// Converted '2210E-01' to 221.
// Attempted conversion of '9112E-01' failed.
// Converted '312E01' to 3120.
// Converted 'FFC8' to 65480.
// Attempted conversion of '0x8F8C' failed.
open System
open System.Globalization
let callTryParse (stringToConvert: string) (styles: NumberStyles) =
match UInt16.TryParse(stringToConvert, styles, CultureInfo.InvariantCulture) with
| true, number ->
printfn $"Converted '{stringToConvert}' to {number}."
| _ ->
printfn $"Attempted conversion of '{stringToConvert}' failed."
do
let numericString = "10603"
let styles = NumberStyles.Integer
callTryParse numericString styles
let numericString = "-10603"
let styles = NumberStyles.None
callTryParse numericString styles
let numericString = "29103.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 = "2210E-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 = "FFC8"
callTryParse numericString NumberStyles.HexNumber
let numericString = "0x8F8C"
callTryParse numericString NumberStyles.HexNumber
// The example displays the following output:
// Converted '10603' to 10603.
// Attempted conversion of '-10603' failed.
// Converted '29103.00' to 29103.
// Attempted conversion of '10345.72' failed.
// Converted '2210E-01' to 221.
// Attempted conversion of '9112E-01' failed.
// Converted '312E01' to 3120.
// Converted 'FFC8' to 65480.
// Attempted conversion of '0x8F8C' failed.
Imports System.Globalization
Module Example
Public Sub Main()
Dim numericString As String
Dim styles As NumberStyles
numericString = "10603"
styles = NumberStyles.Integer
CallTryParse(numericString, styles)
numericString = "-10603"
styles = NumberStyles.None
CallTryParse(numericString, styles)
numericString = "29103.00"
styles = NumberStyles.Integer Or NumberStyles.AllowDecimalPoint
CallTryParse(numericString, styles)
numericString = "10345.72"
styles = NumberStyles.Integer Or NumberStyles.AllowDecimalPoint
CallTryParse(numericString, styles)
numericString = "2210E-01"
styles = NumberStyles.Integer Or NumberStyles.AllowExponent
CallTryParse(numericString, styles)
numericString = "9112E-01"
CallTryParse(numericString, styles)
numericString = "312E01"
CallTryParse(numericString, styles)
numericString = "FFC8"
CallTryParse(numericString, NumberStyles.HexNumber)
numericString = "0x8F8C"
CallTryParse(numericString, NumberStyles.HexNumber)
End Sub
Private Sub CallTryParse(stringToConvert As String, styles AS NumberStyles)
Dim number As UShort
Dim result As Boolean = UInt16.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 '10603' to 10603.
' Attempted conversion of '-10603' failed.
' Converted '29103.00' to 29103.
' Attempted conversion of '10345.72' failed.
' Converted '2210E-01' to 221.
' Attempted conversion of '9112E-01' failed.
' Converted '312E01' to 3120.
' Converted 'FFC8' to 65480.
' Attempted conversion of '0x8F8C' failed.
Комментарии
Метод TryParse(String, NumberStyles, IFormatProvider, UInt16) похож на метод Parse(String, NumberStyles, IFormatProvider), за исключением того, что он не создает исключение, если преобразование завершается ошибкой. Этот метод устраняет необходимость использовать обработку исключений для проверки FormatException, если s
недопустим и не может быть успешно проанализирована.
Параметр style
определяет элементы стиля (например, пробел или положительный или отрицательный знак), которые разрешены в параметре s
для успешной операции синтаксического анализа. Это должно быть сочетание битовых флагов из перечисления NumberStyles. В зависимости от значения style
параметр s
может включать следующие элементы:
[
Элементы в квадратных скобках ([ и ]) являются необязательными. Или, если параметр style
включает AllowHexSpecifier, параметр s
может включать следующие элементы:
[ws]шестнадцатеричные[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, указывающий, что значение представлено в экспоненциальной (научной) нотации. Параметр s
может представлять число в экспоненциальной нотации, если style
включает флаг NumberStyles.AllowExponent.
exponential_digits последовательность цифр от 0 до 9. Параметр s
может представлять число в экспоненциальной нотации, если style
включает флаг NumberStyles.AllowExponent.
шестнадцатеричные цифры последовательность шестнадцатеричных цифр от 0 до f или от 0 до F.
Заметка
Все символы NUL (U+0000) в s
игнорируются операцией синтаксического анализа независимо от значения аргумента 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 | Элемент знака |
AllowTrailingSign | Элемент знака |
AllowParentheses | Элемент знака |
AllowThousands | Элемент разделителя групп (,) . |
AllowCurrencySymbol | Элемент currency ($). |
Currency | Все элементы. Однако s не может представлять шестнадцатеричное число или число в экспоненциальной нотации. |
Float | Элемент s также может использовать экспоненциальную нотацию. |
Number | Элементы |
Any | Все элементы. Однако s не может представлять шестнадцатеричное число. |
Если используется флаг NumberStyles.AllowHexSpecifier, s
должно быть шестнадцатеричным значением. Допустимые шестнадцатеричные цифры: от 0 до 9, f и A до F. Префикс, например "0x", не поддерживается и приводит к сбою операции синтаксического анализа. Единственными другими флагами, которые могут присутствовать в style
, являются NumberStyles.AllowLeadingWhite и NumberStyles.AllowTrailingWhite. (Перечисление NumberStyles имеет составной стиль, HexNumber, который включает как флаги пробелов.)
Заметка
Если s
является строковым представлением шестнадцатеричного числа, оно не может предшествовать любому украшению (например, 0x
или &h
), которое отличает его как шестнадцатеричное число. Это приводит к сбою преобразования.
Параметр provider
— это реализация IFormatProvider. Его метод GetFormat возвращает объект NumberFormatInfo, предоставляющий сведения о формате s
для конкретного языка и региональных параметров. Параметр provider
может быть одним из следующих вариантов:
Объект CultureInfo, представляющий язык и региональные параметры, предоставляющие сведения о форматировании. Его метод GetFormat возвращает объект NumberFormatInfo, предоставляющий числовые сведения о форматировании для этого языка и региональных параметров.
Объект NumberFormatInfo, предоставляющий числовые сведения о форматировании. (Его реализация GetFormat просто возвращается.)
Настраиваемый объект, реализующий IFormatProvider. Его метод GetFormat создает экземпляр и возвращает объект NumberFormatInfo, предоставляющий сведения о форматировании.
Если provider
null
, используется объект NumberFormatInfo для текущего языка и региональных параметров.