Прочитать на английском

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


SByte.Parse Метод

Определение

Преобразует строковое представление числа в 8-разрядное целое число со знаком.

Перегрузки

Parse(String, NumberStyles, IFormatProvider)

Преобразует строковое представление числа в указанном стиле и формате языка и региональных параметров в его 8-разрядном эквиваленте со знаком.

Parse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider)

Преобразует представление диапазона числа в указанном стиле и формате языка и региональных параметров в его 8-разрядном эквиваленте со знаком.

Parse(ReadOnlySpan<Byte>, NumberStyles, IFormatProvider)

Анализирует диапазон символов UTF-8 в значение.

Parse(String, IFormatProvider)

Преобразует строковое представление числа в указанном формате языка и региональных параметров в его 8-разрядное целое число со знаком.

Parse(String)

Преобразует строковое представление числа в 8-разрядное целое число со знаком.

Parse(ReadOnlySpan<Char>, IFormatProvider)

Анализирует диапазон символов в значение.

Parse(ReadOnlySpan<Byte>, IFormatProvider)

Анализирует диапазон символов UTF-8 в значение.

Parse(String, NumberStyles)

Преобразует строковое представление числа в указанном стиле в его 8-разрядное целое число со знаком.

Parse(String, NumberStyles, IFormatProvider)

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

Важно!

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

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

Преобразует строковое представление числа в указанном стиле и формате языка и региональных параметров в его 8-разрядном эквиваленте со знаком.

[System.CLSCompliant(false)]
public static sbyte Parse (string s, System.Globalization.NumberStyles style, IFormatProvider provider);
public static sbyte Parse (string s, System.Globalization.NumberStyles style, IFormatProvider? provider);
[System.CLSCompliant(false)]
public static sbyte Parse (string s, System.Globalization.NumberStyles style, IFormatProvider? provider);

Параметры

s
String

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

style
NumberStyles

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

provider
IFormatProvider

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

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

8-разрядное значение со знаком, эквивалентное числу, указанному в параметре s.

Реализации

Атрибуты

Исключения

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

-или-

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

s не соответствует формату, который соответствует style.

s представляет число, которое меньше SByte.MinValue или больше SByte.MaxValue.

-или-

s включает ненулевых, дробные цифры.

Примеры

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

using System;
using System.Globalization;

public class SByteConversion
{
   NumberFormatInfo provider = NumberFormatInfo.CurrentInfo;

   public static void Main()
   {
      string stringValue;
      NumberStyles style;

      stringValue = "   123   ";
      style = NumberStyles.None;     
      CallParseOperation(stringValue, style);
      
      stringValue = "000,000,123";
      style = NumberStyles.Integer | NumberStyles.AllowThousands;
      CallParseOperation(stringValue, style);
      
      stringValue = "-100";
      style = NumberStyles.AllowLeadingSign;
      CallParseOperation(stringValue, style);
      
      stringValue = "100-";
      style = NumberStyles.AllowLeadingSign;
      CallParseOperation(stringValue, style);
      
      stringValue = "100-";
      style = NumberStyles.AllowTrailingSign;
      CallParseOperation(stringValue, style);
      
      stringValue = "$100";
      style = NumberStyles.AllowCurrencySymbol;
      CallParseOperation(stringValue, style);
      
      style = NumberStyles.Integer;
      CallParseOperation(stringValue, style);
      
      style = NumberStyles.AllowDecimalPoint;
      CallParseOperation("100.0", style);
      
      stringValue = "1e02";
      style = NumberStyles.AllowExponent;
      CallParseOperation(stringValue, style);
      
      stringValue = "(100)";
      style = NumberStyles.AllowParentheses;
      CallParseOperation(stringValue, style);
   }
   
   private static void CallParseOperation(string stringValue, 
                                          NumberStyles style)
   {                                          
      sbyte number;
      
      if (stringValue == null)
         Console.WriteLine("Cannot parse a null string...");
         
      try
      {
         number = sbyte.Parse(stringValue, style);
         Console.WriteLine("SByte.Parse('{0}', {1})) = {2}", 
                           stringValue, style, number);   
      }
      catch (FormatException)
      {
         Console.WriteLine("'{0}' and {1} throw a FormatException", 
                           stringValue, style);   
      }      
      catch (OverflowException)
      {
         Console.WriteLine("'{0}' is outside the range of a signed byte",
                           stringValue);
      }
   }
}
// The example displays the following information to the console:
//       '   123   ' and None throw a FormatException
//       SByte.Parse('000,000,123', Integer, AllowThousands)) = 123
//       SByte.Parse('-100', AllowLeadingSign)) = -100
//       '100-' and AllowLeadingSign throw a FormatException
//       SByte.Parse('100-', AllowTrailingSign)) = -100
//       SByte.Parse('$100', AllowCurrencySymbol)) = 100
//       '$100' and Integer throw a FormatException
//       SByte.Parse('100.0', AllowDecimalPoint)) = 100
//       SByte.Parse('1e02', AllowExponent)) = 100
//       SByte.Parse('(100)', AllowParentheses)) = -100

Комментарии

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

В зависимости от значения styleпараметр s может включать следующие элементы:

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

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

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

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

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

Примечание

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

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

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

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

Примечание

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

Если s представляет шестнадцатеричное число, метод Parse(String, NumberStyles) интерпретирует бит байта высокого порядка в виде бита знака.

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

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

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

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

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

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

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

Parse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider)

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

Важно!

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

Преобразует представление диапазона числа в указанном стиле и формате языка и региональных параметров в его 8-разрядном эквиваленте со знаком.

public static sbyte Parse (ReadOnlySpan<char> s, System.Globalization.NumberStyles style = System.Globalization.NumberStyles.Integer, IFormatProvider? provider = default);
[System.CLSCompliant(false)]
public static sbyte Parse (ReadOnlySpan<char> s, System.Globalization.NumberStyles style = System.Globalization.NumberStyles.Integer, IFormatProvider provider = default);
[System.CLSCompliant(false)]
public static sbyte Parse (ReadOnlySpan<char> s, System.Globalization.NumberStyles style = System.Globalization.NumberStyles.Integer, IFormatProvider? provider = default);

Параметры

s
ReadOnlySpan<Char>

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

style
NumberStyles

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

provider
IFormatProvider

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

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

8-разрядное значение со знаком, эквивалентное числу, указанному в параметре s.

Реализации

Атрибуты

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

.NET 9 и другие версии
Продукт Версии
.NET Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Standard 2.1

Parse(ReadOnlySpan<Byte>, NumberStyles, IFormatProvider)

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

Анализирует диапазон символов UTF-8 в значение.

public static sbyte Parse (ReadOnlySpan<byte> utf8Text, System.Globalization.NumberStyles style = System.Globalization.NumberStyles.Integer, IFormatProvider? provider = default);

Параметры

utf8Text
ReadOnlySpan<Byte>

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

style
NumberStyles

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

provider
IFormatProvider

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

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

Результат синтаксического анализа utf8Text.

Реализации

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

.NET 9 и .NET 8
Продукт Версии
.NET 8, 9

Parse(String, IFormatProvider)

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

Важно!

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

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

Преобразует строковое представление числа в указанном формате языка и региональных параметров в его 8-разрядное целое число со знаком.

[System.CLSCompliant(false)]
public static sbyte Parse (string s, IFormatProvider provider);
public static sbyte Parse (string s, IFormatProvider? provider);
[System.CLSCompliant(false)]
public static sbyte Parse (string s, IFormatProvider? provider);

Параметры

s
String

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

provider
IFormatProvider

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

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

8-разрядное целое число со знаком, эквивалентное числу, указанному в s.

Реализации

Атрибуты

Исключения

s не соответствует правильному формату.

s представляет число меньше SByte.MinValue или больше SByte.MaxValue.

Примеры

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

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      NumberFormatInfo nf = new NumberFormatInfo();
      nf.NegativeSign = "~"; 
      
      string[] values = { "-103", "+12", "~16", "  1", "~255" };
      IFormatProvider[] providers = { nf, CultureInfo.InvariantCulture };
      
      foreach (IFormatProvider provider in providers)
      {
         Console.WriteLine("Conversions using {0}:", ((object) provider).GetType().Name);
         foreach (string value in values)
         {
            try {
               Console.WriteLine("   Converted '{0}' to {1}.", 
                                 value, SByte.Parse(value, provider));
            }                     
            catch (FormatException) {
               Console.WriteLine("   Unable to parse '{0}'.", value);   
            }
            catch (OverflowException) {
               Console.WriteLine("   '{0}' is out of range of the SByte type.", value);         
            }
         }
      }      
   }
}
// The example displays the following output:
//       Conversions using NumberFormatInfo:
//          Unable to parse '-103'.
//          Converted '+12' to 12.
//          Converted '~16' to -16.
//          Converted '  1' to 1.
//          '~255' is out of range of the SByte type.
//       Conversions using CultureInfo:
//          Converted '-103' to -103.
//          Converted '+12' to 12.
//          Unable to parse '~16'.
//          Converted '  1' to 1.
//          Unable to parse '~255'.

Комментарии

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

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

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

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

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

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

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

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

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

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

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

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

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

Parse(String)

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

Важно!

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

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

Преобразует строковое представление числа в 8-разрядное целое число со знаком.

[System.CLSCompliant(false)]
public static sbyte Parse (string s);
public static sbyte Parse (string s);

Параметры

s
String

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

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

8-разрядное целое число со знаком, эквивалентное числу, содержаму в параметре s.

Атрибуты

Исключения

s не состоит из необязательного знака, за которым следует последовательность цифр (ноль до девяти).

s представляет число меньше SByte.MinValue или больше SByte.MaxValue.

Примеры

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

// Define an array of numeric strings.
string[] values = { "-16", "  -3", "+ 12", " +12 ", "  12  ",
                    "+120", "(103)", "192", "-160" };
                           
// Parse each string and display the result.
foreach (string value in values)
{
   try {
      Console.WriteLine("Converted '{0}' to the SByte value {1}.",
                        value, SByte.Parse(value));
   }
   catch (FormatException) {
      Console.WriteLine("'{0}' cannot be parsed successfully by SByte type.",
                        value);
   }                              
   catch (OverflowException) {
      Console.WriteLine("'{0}' is out of range of the SByte type.",
                        value);
   }                                                                        
}
// The example displays the following output:
//       Converted '-16' to the SByte value -16.
//       Converted '  -3' to the SByte value -3.
//       '+ 12' cannot be parsed successfully by SByte type.
//       Converted ' +12 ' to the SByte value 12.
//       Converted '  12  ' to the SByte value 12.
//       Converted '+120' to the SByte value 120.
//       '(103)' cannot be parsed successfully by SByte type.
//       '192' is out of range of the SByte type.
//       '-160' is out of range of the SByte type.

Комментарии

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

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

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

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

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

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

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

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

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

Parse(ReadOnlySpan<Char>, IFormatProvider)

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

Анализирует диапазон символов в значение.

public static sbyte Parse (ReadOnlySpan<char> s, IFormatProvider? provider);

Параметры

s
ReadOnlySpan<Char>

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

provider
IFormatProvider

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

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

Результат синтаксического анализа s.

Реализации

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

.NET 9 и другие версии
Продукт Версии
.NET 7, 8, 9

Parse(ReadOnlySpan<Byte>, IFormatProvider)

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

Анализирует диапазон символов UTF-8 в значение.

public static sbyte Parse (ReadOnlySpan<byte> utf8Text, IFormatProvider? provider);

Параметры

utf8Text
ReadOnlySpan<Byte>

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

provider
IFormatProvider

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

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

Результат синтаксического анализа utf8Text.

Реализации

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

.NET 9 и .NET 8
Продукт Версии
.NET 8, 9

Parse(String, NumberStyles)

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

Важно!

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

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

Преобразует строковое представление числа в указанном стиле в его 8-разрядное целое число со знаком.

[System.CLSCompliant(false)]
public static sbyte Parse (string s, System.Globalization.NumberStyles style);
public static sbyte Parse (string s, System.Globalization.NumberStyles style);

Параметры

s
String

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

style
NumberStyles

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

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

8-разрядное целое число со знаком, эквивалентное числу, указанному в s.

Атрибуты

Исключения

s не соответствует формату, который соответствует style.

s представляет число меньше SByte.MinValue или больше SByte.MaxValue.

-или-

s включает ненулевых, дробные цифры.

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

-или-

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

Примеры

В следующем примере анализируется строковое представление значений SByte с помощью метода Parse(String, NumberStyles). Текущий язык и региональные параметры для примера — en-US.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      NumberStyles style;
      sbyte number;

      // Parse value with no styles allowed.
      string[] values1 = { " 121 ", "121", "-121" };
      style = NumberStyles.None;
      Console.WriteLine("Styles: {0}", style.ToString());
      foreach (string value in values1)
      {
         try {
            number = SByte.Parse(value, style);
            Console.WriteLine("   Converted '{0}' to {1}.", value, number);
         }   
         catch (FormatException) {
            Console.WriteLine("   Unable to parse '{0}'.", value);
         }
      }
      Console.WriteLine();
            
      // Parse value with trailing sign.
      style = NumberStyles.Integer | NumberStyles.AllowTrailingSign;
      string[] values2 = { " 103+", " 103 +", "+103", "(103)", "   +103  " };
      Console.WriteLine("Styles: {0}", style.ToString());
      foreach (string value in values2)
      {
         try {
            number = SByte.Parse(value, style);
            Console.WriteLine("   Converted '{0}' to {1}.", value, number);
         }   
         catch (FormatException) {
            Console.WriteLine("   Unable to parse '{0}'.", value);
         }      
         catch (OverflowException) {
            Console.WriteLine("   '{0}' is out of range of the SByte type.", value);         
         }
      }      
      Console.WriteLine();
   }
}
// The example displays the following output:
//       Styles: None
//          Unable to parse ' 121 '.
//          Converted '121' to 121.
//          Unable to parse '-121'.
//       
//       Styles: Integer, AllowTrailingSign
//          Converted ' 103+' to 103.
//          Converted ' 103 +' to 103.
//          Converted '+103' to 103.
//          Unable to parse '(103)'.
//          Converted '   +103  ' to 103.

Комментарии

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

В зависимости от значения styleпараметр s может включать следующие элементы:

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

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

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

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

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

Примечание

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

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

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

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

Примечание

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

Если s представляет шестнадцатеричное число, метод Parse(String, NumberStyles) интерпретирует бит байта высокого порядка в виде бита знака.

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

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

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

.NET 9 и другие версии
Продукт Версии
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0