Tryparse c что это
Перейти к содержимому

Tryparse c что это

  • автор:

Int32.Try Parse Метод

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

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

Перегрузки

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

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

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

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

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

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

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

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

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

TryParse(ReadOnlySpan, IFormatProvider, Int32)

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

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

public: static bool TryParse(ReadOnlySpan utf8Text, IFormatProvider ^ provider, [Runtime::InteropServices::Out] int % result) = IUtf8SpanParsable::TryParse;
public static bool TryParse (ReadOnlySpan utf8Text, IFormatProvider? provider, out int result);
static member TryParse : ReadOnlySpan * IFormatProvider * int -> bool
Public Shared Function TryParse (utf8Text As ReadOnlySpan(Of Byte), provider As IFormatProvider, ByRef result As Integer) As Boolean
Параметры

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

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

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

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

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

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

TryParse(ReadOnlySpan, Int32)

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

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

public: static bool TryParse(ReadOnlySpan s, [Runtime::InteropServices::Out] int % result);
public static bool TryParse (ReadOnlySpan s, out int result);
static member TryParse : ReadOnlySpan * int -> bool
Public Shared Function TryParse (s As ReadOnlySpan(Of Char), ByRef result As Integer) As Boolean
Параметры

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

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

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

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

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

TryParse(String, Int32)

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

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

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
Параметры

Строка, содержащая преобразуемое число.

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

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

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

Примеры

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

using namespace System; void TryToParse(String^ value) < Int32 number; bool result = Int32::TryParse(value, number); if (result) < Console::WriteLine("Converted '' to .", value, number); > else < if (value == nullptr) value = ""; Console::WriteLine("Attempted conversion of '' 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 '' to ."); > else < Console.WriteLine($"Attempted conversion of '">' failed."); > > > > // 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. 
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 '' to ." | _ -> printfn $"""Attempted conversion of '" else value>' failed.""" // 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. 
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 '' to .", value, number) Else Console.WriteLine("Attempted conversion of '' failed.", If(value ,"")) End If Next End Sub End Module ' The example displays the following output to the console: ' 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. 

Некоторые строки, которые TryParse(String, Int32) метод не может преобразовать в этом примере:

  • «9432.0». Преобразование завершается сбоем, так как строка не может содержать десятичный разделитель; он должен содержать только целочисленные цифры.
  • «16,667». Преобразование завершается сбоем, так как строка не может содержать разделители групп; он должен содержать только целочисленные цифры.
  • «(100)». Преобразование завершается сбоем, так как строка не может содержать отрицательный знак, отличный от того, который определен свойствами и текущими языками и NumberFormatInfo.NumberNegativePattern региональными параметрамиNumberFormatInfo.NegativeSign.
  • «01FA». Преобразование завершается сбоем, так как строка не может содержать шестнадцатеричные цифры; он должен содержать только десятичные цифры.

Комментарии

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

Параметр s содержит число форм:

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

Элемент Описание
ws Необязательный пробел.
sign Необязательный знак.
digits Последовательность цифр в диапазоне от 0 до 9.

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

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

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

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

  • Parse(String)
  • ToString()
  • Синтаксический анализ числовых строк в .NET
  • Пример: служебная программа форматирования .NET Core WinForms (C#)
  • Пример: служебная программа форматирования .NET Core WinForms (Visual Basic)

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

TryParse(ReadOnlySpan, IFormatProvider, Int32)

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

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

public: static bool TryParse(ReadOnlySpan s, IFormatProvider ^ provider, [Runtime::InteropServices::Out] int % result) = ISpanParsable::TryParse;
public static bool TryParse (ReadOnlySpan s, IFormatProvider? provider, out int result);
static member TryParse : ReadOnlySpan * IFormatProvider * int -> bool
Public Shared Function TryParse (s As ReadOnlySpan(Of Char), provider As IFormatProvider, ByRef result As Integer) As Boolean
Параметры

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

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

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

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

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

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

TryParse(String, IFormatProvider, Int32)

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

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

public: static bool TryParse(System::String ^ s, IFormatProvider ^ provider, [Runtime::InteropServices::Out] int % result) = IParsable::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
Параметры

Строка для анализа.

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

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

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

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

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

TryParse(ReadOnlySpan, NumberStyles, IFormatProvider, Int32)

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

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

public: static bool TryParse(ReadOnlySpan utf8Text, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] int % result) = System::Numerics::INumberBase::TryParse;
public static bool TryParse (ReadOnlySpan utf8Text, System.Globalization.NumberStyles style, IFormatProvider? provider, out int result);
static member TryParse : ReadOnlySpan * 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
Параметры

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

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

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

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

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

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

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

TryParse(ReadOnlySpan, Int32)

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

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

public: static bool TryParse(ReadOnlySpan utf8Text, [Runtime::InteropServices::Out] int % result);
public static bool TryParse (ReadOnlySpan utf8Text, out int result);
static member TryParse : ReadOnlySpan * int -> bool
Public Shared Function TryParse (utf8Text As ReadOnlySpan(Of Byte), ByRef result As Integer) As Boolean
Параметры

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

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

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

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

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

TryParse(ReadOnlySpan, NumberStyles, IFormatProvider, Int32)

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

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

public: static bool TryParse(ReadOnlySpan s, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] int % result);
public: static bool TryParse(ReadOnlySpan s, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] int % result) = System::Numerics::INumberBase::TryParse;
public static bool TryParse (ReadOnlySpan s, System.Globalization.NumberStyles style, IFormatProvider? provider, out int result);
public static bool TryParse (ReadOnlySpan s, System.Globalization.NumberStyles style, IFormatProvider provider, out int result);
static member TryParse : ReadOnlySpan * 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
Параметры

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

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

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

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

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

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

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

TryParse(String, NumberStyles, IFormatProvider, Int32)

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

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

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::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
Параметры

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

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

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

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

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

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

Исключения

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

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

Примеры

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

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 '' to .", stringToConvert, number); else Console::WriteLine("Attempted conversion of '' 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 '' to ."); else Console.WriteLine($"Attempted conversion of '' 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 '' to ." | _ -> printfn $"Attempted conversion of '' failed." [] 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 '' to .", stringToConvert, number) Else Console.WriteLine("Attempted conversion of '' 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. 

Комментарии

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

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

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

Или, если style параметр включает :AllowHexSpecifier

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

Элемент Описание
ws Необязательный пробел. Пробелы могут отображаться в начале , s если style включает NumberStyles.AllowLeadingWhite флаг, или в конце s , если style включает NumberStyles.AllowTrailingWhite флаг.
$ Символ валюты для конкретного языка и региональных параметров. Его положение в строке определяется свойством CurrencyPositivePattern объекта , NumberFormatInfo возвращаемого GetFormat методом provider параметра . Символ валюты может отображаться в , s если style содержит NumberStyles.AllowCurrencySymbol флаг .
sign Необязательный знак. Символ знака может отображаться в , s если style содержит флаги NumberStyles.AllowLeadingSign или NumberStyles.AllowTrailingSign .
digits Последовательность цифр от 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 .
hexdigits Последовательность шестнадцатеричных цифр от 0 до f или от 0 до F.

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

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

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

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

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

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

  • Parse(String)
  • NumberStyles
  • ToString()
  • Синтаксический анализ числовых строк в .NET

Single. Try Parse Метод

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

Преобразует строковое представление числа в эквивалентное ему число одиночной точности с плавающей запятой. Возвращает значение, указывающее, успешно ли выполнено преобразование.

Перегрузки

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

Преобразует строковое представление числа в диапазоне символов в эквивалентное ему число одиночной точности с плавающей запятой. Возвращает значение, указывающее, успешно ли выполнено преобразование.

Преобразует строковое представление числа в эквивалентное ему число одиночной точности с плавающей запятой. Возвращает значение, указывающее, успешно ли выполнено преобразование.

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

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

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

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

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

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

Комментарии

В .NET Core 3.0 и более поздних версиях слишком большие значения округляются до PositiveInfinity или NegativeInfinity в соответствии со спецификацией IEEE 754. В предыдущих версиях, включая платформа .NET Framework, анализ значения, которое было слишком большим для представления, приводил к сбою.

TryParse(ReadOnlySpan, IFormatProvider, Single)

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

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

public: static bool TryParse(ReadOnlySpan s, IFormatProvider ^ provider, [Runtime::InteropServices::Out] float % result) = ISpanParsable::TryParse;
public static bool TryParse (ReadOnlySpan s, IFormatProvider? provider, out float result);
static member TryParse : ReadOnlySpan * IFormatProvider * single -> bool
Public Shared Function TryParse (s As ReadOnlySpan(Of Char), provider As IFormatProvider, ByRef result As Single) As Boolean
Параметры

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

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

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

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

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

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

TryParse(ReadOnlySpan, Single)

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

Преобразует строковое представление числа в диапазоне символов в эквивалентное ему число одиночной точности с плавающей запятой. Возвращает значение, указывающее, успешно ли выполнено преобразование.

public: static bool TryParse(ReadOnlySpan s, [Runtime::InteropServices::Out] float % result);
public static bool TryParse (ReadOnlySpan s, out float result);
static member TryParse : ReadOnlySpan * single -> bool
Public Shared Function TryParse (s As ReadOnlySpan(Of Char), ByRef result As Single) As Boolean
Параметры

>Диапазон символов, содержащий строковое представление числа, которое нужно преобразовать.

При возврате этот метод содержит число одиночной точности с плавающей запятой, эквивалентное параметру s , если преобразование завершилось успешно, или нуль, если оно завершилось неудачно. Преобразование не удается выполнить, если параметр s имеет значение null или пуст или не является числом в допустимом формате. Если s является допустимым числом меньше , чем Single.MinValue, result имеет значение NegativeInfinity. Если s является допустимым числом больше , чем Single.MaxValue, result имеет значение PositiveInfinity. Этот параметр передается неинициализированным; любое значение, первоначально предоставленное в result , будет перезаписано.

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

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

Комментарии

В .NET Core 3.0 и более поздних версиях слишком большие значения округляются до PositiveInfinity или NegativeInfinity в соответствии со спецификацией IEEE 754. В предыдущих версиях, включая платформа .NET Framework, анализ значения, которое было слишком большим для представления, приводил к сбою.

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

TryParse(String, Single)

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

Преобразует строковое представление числа в эквивалентное ему число одиночной точности с плавающей запятой. Возвращает значение, указывающее, успешно ли выполнено преобразование.

public: static bool TryParse(System::String ^ s, [Runtime::InteropServices::Out] float % result);
public static bool TryParse (string s, out float result);
public static bool TryParse (string? s, out float result);
static member TryParse : string * single -> bool
Public Shared Function TryParse (s As String, ByRef result As Single) As Boolean
Параметры

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

Когда этот метод возвращает значение, оно содержит эквивалент числового значения или символа, содержащегося в параметре s , представленный в виде числа одиночной точности с плавающей запятой, если преобразование прошло успешно, или нуль, если произошел сбой преобразования. Преобразование не удается выполнить, если параметр s имеет значение null или Empty или не является числом в допустимом формате. Он также завершается ошибкой в платформа .NET Framework и .NET Core 2.2 и более ранних версий, если s представляет число меньше Single.MinValue или больше Single.MaxValue. Этот параметр передается неинициализированным; любое значение, первоначально предоставленное в result , будет перезаписано.

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

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

Примеры

В следующем примере метод используется TryParse(String, Single) для преобразования строковых представлений числовых значений в Single значения. Предполагается, что en-US является текущим языком и региональными параметрами.

string value; float number; // Parse a floating-point value with a thousands separator. value = "1,643.57"; if (Single.TryParse(value, out number)) Console.WriteLine(number); else Console.WriteLine("Unable to parse ''.", value); // Parse a floating-point value with a currency symbol and a // thousands separator. value = "$1,643.57"; if (Single.TryParse(value, out number)) Console.WriteLine(number); else Console.WriteLine("Unable to parse ''.", value); // Parse value in exponential notation. value = "-1.643e6"; if (Single.TryParse(value, out number)) Console.WriteLine(number); else Console.WriteLine("Unable to parse ''.", value); // Parse a negative integer value. value = "-168934617882109132"; if (Single.TryParse(value, out number)) Console.WriteLine(number); else Console.WriteLine("Unable to parse ''.", value); // The example displays the following output: // 1643.57 // Unable to parse '$1,643.57'. // -164300 // -1.689346E+17 
// Parse a floating-point value with a thousands separator. let value = "1,643.57" match Single.TryParse value with | true, number -> printfn $"" | _ -> printfn $"Unable to parse ''." // Parse a floating-point value with a currency symbol and a // thousands separator. let value = "$1,643.57" match Single.TryParse value with | true, number -> printfn $"" | _ -> printfn $"Unable to parse ''." // Parse value in exponential notation. let value = "-1.643e6" match Single.TryParse value with | true, number -> printfn $"" | _ -> printfn $"Unable to parse ''." // Parse a negative integer value. let value = "-168934617882109132" match Single.TryParse value with | true, number -> printfn $"" | _ -> printfn $"Unable to parse ''." // The example displays the following output: // 1643.57 // Unable to parse '$1,643.57'. // -164300 // -1.689346E+17 
Dim value As String Dim number As Single ' Parse a floating-point value with a thousands separator. value = "1,643.57" If Single.TryParse(value, number) Then Console.WriteLine(number) Else Console.WriteLine("Unable to parse ''.", value) End If ' Parse a floating-point value with a currency symbol and a ' thousands separator. value = "$1,643.57" If Single.TryParse(value, number) Then Console.WriteLine(number) Else Console.WriteLine("Unable to parse ''.", value) End If ' Parse value in exponential notation. value = "-1.643e6" If Single.TryParse(value, number) Console.WriteLine(number) Else Console.WriteLine("Unable to parse ''.", value) End If ' Parse a negative integer number. value = "-168934617882109132" If Single.TryParse(value, number) Console.WriteLine(number) Else Console.WriteLine("Unable to parse ''.", value) End If ' The example displays the following output: ' 1643.57 ' Unable to parse '$1,643.57'. ' -1643000 ' -1.689346E+17 

Комментарии

В .NET Core 3.0 и более поздних версиях слишком большие значения округляются до PositiveInfinity или NegativeInfinity в соответствии со спецификацией IEEE 754. В предыдущих версиях, включая платформа .NET Framework, анализ значения, которое было слишком большим для представления, приводил к сбою.

Эта перегрузка отличается от Single.Parse(String) метода тем, что возвращает логическое значение, указывающее, была ли операция синтаксического анализа успешной, а не возвращала проанализированное числовое значение. Это избавляет от необходимости использовать обработку исключений FormatException для тестирования в случае, если s он является недопустимым и не может быть успешно проанализирован.

Параметр s может содержать PositiveInfinitySymbol, NegativeInfinitySymbol, NaNSymbol (при сравнении строк учитывается регистр) или строку в формате :

[ws] [знак] [целочисленные цифры,]целочисленные цифры[.[ fractional-digits]][e[sign]exponential-digits][ws]

Элементы в квадратных скобках являются необязательными. Каждый из элементов описан в таблице ниже.

Элемент Описание
ws Серия символов пробелов.
sign Знак отрицательного или положительного знака.
целочисленные цифры Ряд числовых символов в диапазоне от 0 до 9, определяющих интегральную часть числа. Целочисленные цифры могут отсутствовать при наличии дробных цифр.
, Символ разделителя групп, зависящий от языка и региональных параметров.
. Символ десятичной запятой для конкретного языка и региональных параметров.
дробные цифры Ряд числовых символов в диапазоне от 0 до 9, определяющих дробную часть числа.
E Символ e в верхнем или нижнем регистре, обозначающий экспоненциальную (экспоненциальную) нотацию.
экспоненциальные цифры Ряд числовых символов в диапазоне от 0 до 9, определяющих экспоненту.

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

Параметр s анализируется с использованием сведений о форматировании в объекте NumberFormatInfo , инициализированном для текущего системного языка и региональных параметров. Для получения дополнительной информации см. NumberFormatInfo.CurrentInfo. Чтобы проанализировать строку, используя сведения о форматировании других указанных языков и региональных параметров, используйте перегрузку TryParse(String, NumberStyles, IFormatProvider, Single) метода .

Обычно при передаче методу Single.TryParse строки, созданной путем вызова Single.ToString метода, возвращается исходное Single значение. Однако из-за потери точности значения могут быть не равны.

Если s тип данных выходит за пределы диапазонаSingle, метод возвращает платформа .NET Framework false и .NET Core 2.2 и более ранних версий. В .NET Core 3.0 и более поздних версиях он возвращает значение Single.NegativeInfinity , если s меньше Single.MinValue , а Single.PositiveInfinity если s больше Single.MaxValue.

Если разделитель обнаружен в s параметре во время операции синтаксического анализа, а применимые денежные или числовые разделители и разделители групп совпадают, операция синтаксического анализа предполагает, что разделитель является десятичным, а не разделителем группы. Дополнительные сведения о разделителях см. в разделе CurrencyDecimalSeparator, NumberDecimalSeparator, CurrencyGroupSeparatorи NumberGroupSeparator.

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

  • Parse(String)
  • ToString()
  • Синтаксический анализ числовых строк в .NET

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

TryParse(ReadOnlySpan, IFormatProvider, Single)

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

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

public: static bool TryParse(ReadOnlySpan utf8Text, IFormatProvider ^ provider, [Runtime::InteropServices::Out] float % result) = IUtf8SpanParsable::TryParse;
public static bool TryParse (ReadOnlySpan utf8Text, IFormatProvider? provider, out float result);
static member TryParse : ReadOnlySpan * IFormatProvider * single -> bool
Public Shared Function TryParse (utf8Text As ReadOnlySpan(Of Byte), provider As IFormatProvider, ByRef result As Single) As Boolean
Параметры

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

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

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

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

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

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

TryParse(String, IFormatProvider, Single)

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

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

public: static bool TryParse(System::String ^ s, IFormatProvider ^ provider, [Runtime::InteropServices::Out] float % result) = IParsable::TryParse;
public static bool TryParse (string? s, IFormatProvider? provider, out float result);
static member TryParse : string * IFormatProvider * single -> bool
Public Shared Function TryParse (s As String, provider As IFormatProvider, ByRef result As Single) As Boolean
Параметры

Строка для анализа.

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

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

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

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

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

TryParse(ReadOnlySpan, NumberStyles, IFormatProvider, Single)

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

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

public: static bool TryParse(ReadOnlySpan utf8Text, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] float % result) = System::Numerics::INumberBase::TryParse;
public static bool TryParse (ReadOnlySpan utf8Text, System.Globalization.NumberStyles style, IFormatProvider? provider, out float result);
static member TryParse : ReadOnlySpan * System.Globalization.NumberStyles * IFormatProvider * single -> bool
Public Shared Function TryParse (utf8Text As ReadOnlySpan(Of Byte), style As NumberStyles, provider As IFormatProvider, ByRef result As Single) As Boolean
Параметры

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

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

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

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

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

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

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

TryParse(ReadOnlySpan, Single)

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

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

public: static bool TryParse(ReadOnlySpan utf8Text, [Runtime::InteropServices::Out] float % result);
public static bool TryParse (ReadOnlySpan utf8Text, out float result);
static member TryParse : ReadOnlySpan * single -> bool
Public Shared Function TryParse (utf8Text As ReadOnlySpan(Of Byte), ByRef result As Single) As Boolean
Параметры

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

При возврате этого метода содержит число с плавающей запятой с одной точностью, эквивалентное числового значения или символа, содержащегося в , utf8Text если преобразование выполнено успешно, или ноль, если преобразование завершилось неудачно. Преобразование завершается ошибкой, utf8Text если имеет Empty или не имеет допустимый формат. Этот параметр передается неинициализированным. Любое значение, первоначально предоставленное в результате, будет перезаписано.

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

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

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

TryParse(ReadOnlySpan, NumberStyles, IFormatProvider, Single)

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

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

public: static bool TryParse(ReadOnlySpan s, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] float % result);
public: static bool TryParse(ReadOnlySpan s, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] float % result) = System::Numerics::INumberBase::TryParse;
public static bool TryParse (ReadOnlySpan s, System.Globalization.NumberStyles style, IFormatProvider? provider, out float result);
public static bool TryParse (ReadOnlySpan s, System.Globalization.NumberStyles style, IFormatProvider provider, out float result);
static member TryParse : ReadOnlySpan * System.Globalization.NumberStyles * IFormatProvider * single -> bool
Public Shared Function TryParse (s As ReadOnlySpan(Of Char), style As NumberStyles, provider As IFormatProvider, ByRef result As Single) As Boolean
Параметры

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

Побитовая комбинация значений перечисления, которая показывает разрешенный формат параметра s . Обычно указывается значение Float в сочетании со значением AllowThousands.

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

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

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

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

Комментарии

В .NET Core 3.0 и более поздних версиях значения, которые слишком велики для представления, округляются до PositiveInfinity или NegativeInfinity в соответствии со спецификацией IEEE 754. В предыдущих версиях, включая платформа .NET Framework, анализ значения, которое было слишком большим для представления, приводил к сбою.

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

TryParse(String, NumberStyles, IFormatProvider, Single)

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

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

public: static bool TryParse(System::String ^ s, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] float % result);
public: static bool TryParse(System::String ^ s, System::Globalization::NumberStyles style, IFormatProvider ^ provider, [Runtime::InteropServices::Out] float % result) = System::Numerics::INumberBase::TryParse;
public static bool TryParse (string s, System.Globalization.NumberStyles style, IFormatProvider provider, out float result);
public static bool TryParse (string? s, System.Globalization.NumberStyles style, IFormatProvider? provider, out float result);
static member TryParse : string * System.Globalization.NumberStyles * IFormatProvider * single -> bool
Public Shared Function TryParse (s As String, style As NumberStyles, provider As IFormatProvider, ByRef result As Single) As Boolean
Параметры

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

Побитовая комбинация значений перечисления, которая показывает разрешенный формат параметра s . Обычно указывается значение Float в сочетании со значением AllowThousands.

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

Когда этот метод возвращает значение, оно содержит эквивалент числового значения или символа, содержащегося в параметре s , представленный в виде числа одиночной точности с плавающей запятой, если преобразование прошло успешно, или нуль, если произошел сбой преобразования. Преобразование завершается неудачно, если параметр s имеет значение null или Empty, не является значением в формате, совместимом с параметром style или если style не является допустимой комбинацией перечисленных констант NumberStyles. Он также завершается сбоем в платформа .NET Framework или .NET Core 2.2 и более ранних версий, если s представляет число меньше Single.MinValue или больше Single.MaxValue. Этот параметр передается неинициализированным; любое значение, первоначально предоставленное в result , будет перезаписано.

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

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

Исключения

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

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

Примеры

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

string value; System.Globalization.NumberStyles style; System.Globalization.CultureInfo culture; float number; // Parse currency value using en-GB culture. value = "£1,097.63"; style = System.Globalization.NumberStyles.Number | System.Globalization.NumberStyles.AllowCurrencySymbol; culture = System.Globalization.CultureInfo.CreateSpecificCulture("en-GB"); if (Single.TryParse(value, style, culture, out number)) Console.WriteLine("Converted '' to .", value, number); else Console.WriteLine("Unable to convert ''.", value); value = "1345,978"; style = System.Globalization.NumberStyles.AllowDecimalPoint; culture = System.Globalization.CultureInfo.CreateSpecificCulture("fr-FR"); if (Single.TryParse(value, style, culture, out number)) Console.WriteLine("Converted '' to .", value, number); else Console.WriteLine("Unable to convert ''.", value); value = "1.345,978"; style = System.Globalization.NumberStyles.AllowDecimalPoint | System.Globalization.NumberStyles.AllowThousands; culture = System.Globalization.CultureInfo.CreateSpecificCulture("es-ES"); if (Single.TryParse(value, style, culture, out number)) Console.WriteLine("Converted '' to .", value, number); else Console.WriteLine("Unable to convert ''.", value); value = "1 345,978"; if (Single.TryParse(value, style, culture, out number)) Console.WriteLine("Converted '' to .", value, number); else Console.WriteLine("Unable to convert ''.", value); // The example displays the following output: // Converted '£1,097.63' to 1097.63. // Converted '1345,978' to 1345.978. // Converted '1.345,978' to 1345.978. // Unable to convert '1 345,978'. 
// Parse currency value using en-GB culture. let value = "£1,097.63" let style = System.Globalization.NumberStyles.Number ||| System.Globalization.NumberStyles.AllowCurrencySymbol let culture = System.Globalization.CultureInfo.CreateSpecificCulture "en-GB" match Single.TryParse(value, style, culture) with | true, number -> printfn $"Converted '' to ." | _ -> printfn $"Unable to convert ''." let value = "1345,978" let style = System.Globalization.NumberStyles.AllowDecimalPoint let culture = System.Globalization.CultureInfo.CreateSpecificCulture "fr-FR" match Single.TryParse(value, style, culture) with | true, number -> printfn $"Converted '' to ." | _ -> printfn $"Unable to convert ''." let value = "1.345,978" let style = System.Globalization.NumberStyles.AllowDecimalPoint ||| System.Globalization.NumberStyles.AllowThousands let culture = System.Globalization.CultureInfo.CreateSpecificCulture "es-ES" match Single.TryParse(value, style, culture) with | true, number -> printfn $"Converted '' to ." | _ -> printfn $"Unable to convert ''." let value = "1 345,978" match Single.TryParse(value, style, culture) with | true, number -> printfn $"Converted '' to ." | _ -> printfn $"Unable to convert ''." // The example displays the following output: // Converted '£1,097.63' to 1097.63. // Converted '1345,978' to 1345.978. // Converted '1.345,978' to 1345.978. // Unable to convert '1 345,978'. 
Dim value As String Dim style As System.Globalization.NumberStyles Dim culture As System.Globalization.CultureInfo Dim number As Single ' Parse currency value using en-GB culture. value = "£1,097.63" style = System.Globalization.NumberStyles.Number Or _ System.Globalization.NumberStyles.AllowCurrencySymbol culture = System.Globalization.CultureInfo.CreateSpecificCulture("en-GB") If Single.TryParse(value, style, culture, number) Then Console.WriteLine("Converted '' to .", value, number) Else Console.WriteLine("Unable to convert ''.", value) End If value = "1345,978" style = System.Globalization.NumberStyles.AllowDecimalPoint culture = System.Globalization.CultureInfo.CreateSpecificCulture("fr-FR") If Single.TryParse(value, style, culture, number) Then Console.WriteLine("Converted '' to .", value, number) Else Console.WriteLine("Unable to convert ''.", value) End If value = "1.345,978" style = System.Globalization.NumberStyles.AllowDecimalPoint Or _ System.Globalization.NumberStyles.AllowThousands culture = System.Globalization.CultureInfo.CreateSpecificCulture("es-ES") If Single.TryParse(value, style, culture, number) Then Console.WriteLine("Converted '' to .", value, number) Else Console.WriteLine("Unable to convert ''.", value) End If value = "1 345,978" If Single.TryParse(value, style, culture, number) Then Console.WriteLine("Converted '' to .", value, number) Else Console.WriteLine("Unable to convert ''.", value) End If ' The example displays the following output: ' Converted '£1,097.63' to 1097.63. ' Converted '1345,978' to 1345.978. ' Converted '1.345,978' to 1345.978. ' Unable to convert '1 345,978'. 

Комментарии

В .NET Core 3.0 и более поздних версиях значения, которые слишком велики для представления, округляются до PositiveInfinity или NegativeInfinity в соответствии со спецификацией IEEE 754. В предыдущих версиях, включая платформа .NET Framework, анализ значения, которое было слишком большим для представления, приводил к сбою.

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

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

  • NumberStyles.AllowHexSpecifier
  • NumberStyles.HexNumber

Параметр s может содержать PositiveInfinitySymbol, NegativeInfinitySymbolдля языка и NaNSymbol региональных параметров, указанных параметром provider . Кроме того, в зависимости от значения style s параметр может включать следующие элементы:

[ws] [$] [sign] [целочисленные цифры,]целочисленные цифры[.fractional-digits][e[sign]exponential-digits][ws]

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

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

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

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

Значение NumberStyles Элементы, разрешенные в , в дополнение к цифрам
None Только целочисленный элемент.
AllowDecimalPoint Элементы . и fractional-digits .
AllowExponent Параметр s также может использовать экспоненциальную нотацию. Этот флаг сам по себе поддерживает значения в виде целочисленных цифрEэкспоненциальных цифр; Дополнительные флаги необходимы для успешного анализа строк в экспоненциальной нотации с такими элементами, как положительные или отрицательные знаки и символы десятичной запятой.
AllowLeadingWhite Элемент ws в начале s .
AllowTrailingWhite Элемент ws в конце s .
AllowLeadingSign Элемент sign в начале s .
AllowTrailingSign Элемент sign в конце s .
AllowParentheses Элемент sign в виде круглых скобок, включающих числовое значение.
AllowThousands Элемент , .
AllowCurrencySymbol Элемент $.
Currency Все. Параметр s не может представлять шестнадцатеричное число или число в экспоненциальной нотации.
Float Элемент ws в начале или конце s , знак в начале s и символ . Параметр s также может использовать экспоненциальную нотацию.
Number Элементы ws , sign , разделитель тысяч (,) и десятичная запятая (.) .
Any Все стили, кроме s не могут представлять шестнадцатеричное число.

Параметр provider является реализацией, IFormatProvider метод которой GetFormat возвращает объект , предоставляющий NumberFormatInfo сведения о форматировании, относящиеся к языку и региональным параметрам. При вызове TryParse(String, NumberStyles, IFormatProvider, Single) метода он вызывает provider метод параметра GetFormat и передает ему Type объект, представляющий NumberFormatInfo тип . Затем GetFormat метод возвращает NumberFormatInfo объект , предоставляющий сведения о формате s параметра . Существует три способа использования provider параметра для предоставления пользовательских сведений о форматировании в операцию синтаксического анализа.

  • Вы можете передать CultureInfo объект , представляющий язык и региональные параметры, предоставляющие сведения о форматировании. Его GetFormat метод возвращает NumberFormatInfo объект , предоставляющий числовые сведения о форматировании для этого языка и региональных параметров.
  • Вы можете передать фактический NumberFormatInfo объект, предоставляющий числовые сведения о форматировании. (Его реализация GetFormat просто возвращает себя.)
  • Можно передать пользовательский объект, реализующий IFormatProvider. Его GetFormat метод создает экземпляр и возвращает NumberFormatInfo объект , предоставляющий сведения о форматировании.

Если provider имеет значение null , форматирование s интерпретируется на NumberFormatInfo основе объекта текущего языка и региональных параметров.

Если s тип данных выходит за пределы диапазонаSingle, метод вызывает исключение OverflowException в платформа .NET Framework и .NET Core 2.2 и более ранних версиях. В .NET Core 3.0 и более поздних версиях он возвращает значение Single.NegativeInfinity , если s меньше Single.MinValue , а Single.PositiveInfinity если s больше Single.MaxValue.

Если разделитель обнаружен в s параметре во время операции синтаксического анализа, а применимые денежные или числовые разделители и разделители групп совпадают, операция синтаксического анализа предполагает, что разделитель является десятичным, а не разделителем группы. Дополнительные сведения о разделителях см. в разделе CurrencyDecimalSeparator, NumberDecimalSeparator, CurrencyGroupSeparatorи NumberGroupSeparator.

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

  • Parse(String)
  • ToString()
  • Синтаксический анализ числовых строк в .NET

Пытаюсь понять методы Parse() и TryParse() и класс Convert

Прочтал про эти 2 метода и класс на разных сайтах. С Convert все понятно, но с 2 -мя методами возикла сложность и в чем их отличия ?

Отслеживать
задан 9 дек 2019 в 18:21
17 1 1 золотой знак 2 2 серебряных знака 8 8 бронзовых знаков
Какая сложность у вас с ними сложность? Отличия? Посмотрите что они возвращают
9 дек 2019 в 18:26

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

Метод int.Parse(string s) пробует получить число из его строкового представления, в случае успеха возвращает число, иначе же бросает FormatException .

Метод int.TryParse(string s, out int result) проверяет, можно ли получить число из строки. Если это возможно — возвращает true и полученное число out -параметром, иначе возвращает false результатом и default(int) out -параметром.

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

Пример использования второго метода:

string s = Console.ReadLine(); if (int.TryParse(s, out int i)) Console.WriteLine("Число, увеличенное на 5: ", i + 5); else Console.WriteLine("Введенная строка не являлась числом."); 

Currency.TryParse

Value — строковое значение, которую необходимо преобразовать к типу Currency.

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

Описание

Метод TryParse преобразует строковое значение к типу Currency с проверкой на корректность строки. Если преобразование удалось, то метод возвращает значение True и преобразованное значение помещается в переменную, указанную в параметре Result .

Пример

b := Currency.TryParse(s, c);

После выполнения примера в случае удачного преобразования в переменной «b» будет находиться значение True, и в переменной «c» будет значение 234.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *