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


SByte.TryParse Метод

Определение

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

Перегрузки

TryParse(ReadOnlySpan<Byte>, IFormatProvider, SByte)

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

TryParse(ReadOnlySpan<Char>, SByte)

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

TryParse(String, SByte)

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

TryParse(ReadOnlySpan<Char>, IFormatProvider, SByte)

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

TryParse(String, IFormatProvider, SByte)

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

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

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

TryParse(ReadOnlySpan<Byte>, SByte)

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

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

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

TryParse(String, NumberStyles, IFormatProvider, SByte)

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

TryParse(ReadOnlySpan<Byte>, IFormatProvider, SByte)

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

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

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

Параметры

utf8Text
ReadOnlySpan<Byte>

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

provider
IFormatProvider

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

result
SByte

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

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

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

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

TryParse(ReadOnlySpan<Char>, SByte)

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

Важно!

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

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

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

Параметры

s
ReadOnlySpan<Char>

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

result
SByte

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

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

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

Атрибуты

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

TryParse(String, SByte)

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

Важно!

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

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

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

Параметры

s
String

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

result
SByte

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

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

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

Атрибуты

Примеры

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

string[] numericStrings = {"-3.6", "12.8", "+16.7", "    3   ", "(17)", 
                           "-17", "+12", "18-", "987", "1,024", "  127 "};
sbyte number;
foreach (string numericString in numericStrings)
{
   if (sbyte.TryParse(numericString, out number)) 
      Console.WriteLine("Converted '{0}' to {1}.", numericString, number);
   else
      Console.WriteLine("Cannot convert '{0}' to an SByte.", numericString);
}
// The example displays the following output to the console:
//       Cannot convert '-3.6' to an SByte.
//       Cannot convert '12.8' to an SByte.
//       Cannot convert '+16.7' to an SByte.
//       Converted '    3   ' to 3.
//       Cannot convert '(17)' to an SByte.
//       Converted '-17' to -17.
//       Converted '+12' to 12.
//       Cannot convert '18-' to an SByte.
//       Cannot convert '987' to an SByte.
//       Cannot convert '1,024' to an SByte.
//       Converted '  127 ' to 127.
open System

let numericStrings = 
    [| "-3.6"; "12.8"; "+16.7"; "    3   "; "(17)" 
       "-17"; "+12"; "18-"; "987"; "1,024"; "  127 " |]

for numericString in numericStrings do
    match SByte.TryParse numericString with 
    | true, number ->
        printfn $"Converted '{numericString}' to {number}."
    | _ ->
        printfn $"Cannot convert '{numericString}' to an SByte."
// The example displays the following output to the console:
//       Cannot convert '-3.6' to an SByte.
//       Cannot convert '12.8' to an SByte.
//       Cannot convert '+16.7' to an SByte.
//       Converted '    3   ' to 3.
//       Cannot convert '(17)' to an SByte.
//       Converted '-17' to -17.
//       Converted '+12' to 12.
//       Cannot convert '18-' to an SByte.
//       Cannot convert '987' to an SByte.
//       Cannot convert '1,024' to an SByte.
//       Converted '  127 ' to 127.
Dim numericStrings() As String = {"-3.6", "12.8", "+16.7", "    3   ", _
                                  "(17)", "-17", "+12", "18-", "987", _
                                  "1,024", "  127 "}
Dim number As SByte
For Each numericString As String In numericStrings
   If SByte.TryParse(numericString, number) Then
      Console.WriteLine("Converted '{0}' to {1}.", numericString, number)
   Else
      Console.WriteLine("Cannot convert '{0}' to an SByte.", numericString)
   End If      
Next
' The example displays the following output to the console:
'       Cannot convert '-3.6' to an SByte.
'       Cannot convert '12.8' to an SByte.
'       Cannot convert '+16.7' to an SByte.
'       Converted '    3   ' to 3.
'       Cannot convert '(17)' to an SByte.
'       Converted '-17' to -17.
'       Converted '+12' to 12.
'       Cannot convert '18-' to an SByte.
'       Cannot convert '987' to an SByte.
'       Cannot convert '1,024' to an SByte.
'       Converted '  127 ' to 127.

Комментарии

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

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

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

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

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

Заметка

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

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

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

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

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

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

TryParse(ReadOnlySpan<Char>, IFormatProvider, SByte)

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

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

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

Параметры

s
ReadOnlySpan<Char>

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

provider
IFormatProvider

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

result
SByte

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

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

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

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

TryParse(String, IFormatProvider, SByte)

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

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

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

Параметры

s
String

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

provider
IFormatProvider

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

result
SByte

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

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

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

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

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

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

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

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

Параметры

utf8Text
ReadOnlySpan<Byte>

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

style
NumberStyles

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

provider
IFormatProvider

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

result
SByte

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

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

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

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

TryParse(ReadOnlySpan<Byte>, SByte)

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

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

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

Параметры

utf8Text
ReadOnlySpan<Byte>

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

result
SByte

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

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

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

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

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

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

Важно!

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

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

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

Параметры

s
ReadOnlySpan<Char>

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

style
NumberStyles

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

provider
IFormatProvider

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

result
SByte

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

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

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

Атрибуты

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

TryParse(String, NumberStyles, IFormatProvider, SByte)

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

Важно!

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

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

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

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

Параметры

s
String

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

style
NumberStyles

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

provider
IFormatProvider

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

result
SByte

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

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

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

Атрибуты

Исключения

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

-или-

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

Примеры

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

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      string numericString;
      NumberStyles styles;
      
      numericString = "106";
      styles = NumberStyles.Integer;
      CallTryParse(numericString, styles);
      
      numericString = "-106";
      styles = NumberStyles.None;
      CallTryParse(numericString, styles);
      
      numericString = "103.00";
      styles = NumberStyles.Integer | NumberStyles.AllowDecimalPoint;
      CallTryParse(numericString, styles);
      
      numericString = "103.72";
      styles = NumberStyles.Integer | NumberStyles.AllowDecimalPoint;
      CallTryParse(numericString, styles);

      numericString = "10E-01";
      styles = NumberStyles.Integer | NumberStyles.AllowExponent;
      CallTryParse(numericString, styles); 
      
      numericString = "12E-01";
      CallTryParse(numericString, styles);
          
      numericString = "12E01";
      CallTryParse(numericString, styles); 
      
      numericString = "C8";
      CallTryParse(numericString, NumberStyles.HexNumber);
      
      numericString = "0x8C";
      CallTryParse(numericString, NumberStyles.HexNumber);
   }
   
   private static void CallTryParse(string stringToConvert, NumberStyles styles)
   {
      sbyte number;
      bool result = SByte.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 '106' to 106.
//       Attempted conversion of '-106' failed.
//       Converted '103.00' to 103.
//       Attempted conversion of '103.72' failed.
//       Converted '10E-01' to 1.
//       Attempted conversion of '12E-01' failed.
//       Converted '12E01' to 120.
//       Converted 'C8' to -56.
//       Attempted conversion of '0x8C' failed.
open System
open System.Globalization

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

[<EntryPoint>]
let main _ =
    let numericString = "106"
    let styles = NumberStyles.Integer
    callTryParse numericString styles
    
    let numericString = "-106"
    let styles = NumberStyles.None
    callTryParse numericString styles
    
    let numericString = "103.00"
    let styles = NumberStyles.Integer ||| NumberStyles.AllowDecimalPoint
    callTryParse numericString styles
    
    let numericString = "103.72"
    let styles = NumberStyles.Integer ||| NumberStyles.AllowDecimalPoint
    callTryParse numericString styles

    let numericString = "10E-01"
    let styles = NumberStyles.Integer ||| NumberStyles.AllowExponent
    callTryParse numericString styles 
    
    let numericString = "12E-01"
    callTryParse numericString styles
        
    let numericString = "12E01"
    callTryParse numericString styles 
    
    let numericString = "C8"
    callTryParse numericString NumberStyles.HexNumber
    
    let numericString = "0x8C"
    callTryParse numericString NumberStyles.HexNumber
    0

// The example displays the following output:
//       Converted '106' to 106.
//       Attempted conversion of '-106' failed.
//       Converted '103.00' to 103.
//       Attempted conversion of '103.72' failed.
//       Converted '10E-01' to 1.
//       Attempted conversion of '12E-01' failed.
//       Converted '12E01' to 120.
//       Converted 'C8' to -56.
//       Attempted conversion of '0x8C' failed.
Imports System.Globalization

Module StringParsing
   Public Sub Main()
      Dim numericString As String
      Dim styles As NumberStyles
      
      numericString = "106"
      styles = NumberStyles.Integer
      CallTryParse(numericString, styles)
      
      numericString = "-106"
      styles = NumberStyles.None
      CallTryParse(numericString, styles)
      
      numericString = "103.00"
      styles = NumberStyles.Integer Or NumberStyles.AllowDecimalPoint
      CallTryParse(numericString, styles)
      
      numericString = "103.72"
      styles = NumberStyles.Integer Or NumberStyles.AllowDecimalPoint
      CallTryParse(numericString, styles)

      numericString = "10E-01"
      styles = NumberStyles.Integer Or NumberStyles.AllowExponent
      CallTryParse(numericString, styles) 
      
      numericString = "12E-01"
      CallTryParse(numericString, styles)
          
      numericString = "12E01"
      CallTryParse(numericString, styles) 
      
      numericString = "C8"
      CallTryParse(numericString, NumberStyles.HexNumber)
      
      numericString = "0x8C"
      CallTryParse(numericString, NumberStyles.HexNumber)
   End Sub
   
   Private Sub CallTryParse(stringToConvert As String, styles AS NumberStyles)
      Dim number As SByte
      Dim result As Boolean = SByte.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 '106' to 106.
'       Attempted conversion of '-106' failed.
'       Converted '103.00' to 103.
'       Attempted conversion of '103.72' failed.
'       Converted '10E-01' to 1.
'       Attempted conversion of '12E-01' failed.
'       Converted '12E01' to 120.
'       Converted 'C8' to -56.
'       Attempted conversion of '0x8C' failed.

Комментарии

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

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

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

Если параметр style включает AllowHexSpecifier, параметр value может включать следующие элементы:

[ws]шестнадцатеричные[ws]

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

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

Заметка

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

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

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

Если используется флаг NumberStyles.AllowHexSpecifier, value должно быть шестнадцатеричным значением. Допустимые шестнадцатеричные цифры: 0-9, a-f и A-F. Единственными другими флагами, которые могут присутствовать в style, являются NumberStyles.AllowLeadingWhite и NumberStyles.AllowTrailingWhite. (Перечисление NumberStyles имеет составной стиль, HexNumber, который включает как флаги пробелов.)

Заметка

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

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

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

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

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

Если providernull, используется объект NumberFormatInfo для текущего языка и региональных параметров.

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

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