BigInteger.Parse Метод

Определение

Преобразует строковое представление числа в его эквивалент типа BigInteger.Converts the string representation of a number to its BigInteger equivalent.

Перегрузки

Parse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider)

Преобразует представление числа, содержащегося в указанном диапазоне символов только для чтения в указанном стиле в его эквивалент BigInteger.Converts the representation of a number, contained in the specified read-only span of characters, in a specified style to its BigInteger equivalent.

Parse(String, IFormatProvider)

Преобразует строковое представление числа в указанном формате, связанном с определенным языком и региональными параметрами, в его эквивалент типа BigInteger.Converts the string representation of a number in a specified culture-specific format to its BigInteger equivalent.

Parse(String, NumberStyles, IFormatProvider)

Преобразует строковое представление числа в указанном стиле и формате, связанном с определенным языком и региональными параметрами, в его эквивалент типа BigInteger.Converts the string representation of a number in a specified style and culture-specific format to its BigInteger equivalent.

Parse(String)

Преобразует строковое представление числа в его эквивалент типа BigInteger.Converts the string representation of a number to its BigInteger equivalent.

Parse(String, NumberStyles)

Преобразует строковое представление числа с указанным стилем в его эквивалент в формате BigInteger.Converts the string representation of a number in a specified style to its BigInteger equivalent.

Parse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider)

Преобразует представление числа, содержащегося в указанном диапазоне символов только для чтения в указанном стиле в его эквивалент BigInteger.Converts the representation of a number, contained in the specified read-only span of characters, in a specified style to its BigInteger equivalent.

public static System.Numerics.BigInteger Parse (ReadOnlySpan<char> value, System.Globalization.NumberStyles style = System.Globalization.NumberStyles.Integer, IFormatProvider? provider = default);
public static System.Numerics.BigInteger Parse (ReadOnlySpan<char> value, System.Globalization.NumberStyles style = System.Globalization.NumberStyles.Integer, IFormatProvider provider = default);
static member Parse : ReadOnlySpan<char> * System.Globalization.NumberStyles * IFormatProvider -> System.Numerics.BigInteger
Public Shared Function Parse (value As ReadOnlySpan(Of Char), Optional style As NumberStyles = System.Globalization.NumberStyles.Integer, Optional provider As IFormatProvider = Nothing) As BigInteger

Параметры

value
ReadOnlySpan<Char>

Доступный только для чтения диапазон символов, содержащий номер для преобразования.A read-only span of characters that contains the number to convert.

style
NumberStyles

Побитовое сочетание значений перечисления, которое показывает разрешенный формат параметра value.A bitwise combination of the enumeration values that specify the permitted format of value.

provider
IFormatProvider

Объект, предоставляющий сведения о форматировании параметра value в зависимости от языка и региональных параметров.An object that provides culture-specific formatting information about value.

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

BigInteger

Значение, эквивалентное числу, которое задается параметром value.A value that is equivalent to the number specified in the value parameter.

Исключения

style не является значением NumberStyles.style is not a NumberStyles value.

-или--or- style включает флаги AllowHexSpecifier и HexNumber вместе с другим значениями.style includes the AllowHexSpecifier or HexNumber flag along with another value.

value имеет значение null.value is null.

value не соответствует образцу ввода, заданному style.value does not comply with the input pattern specified by style.

Комментарии

Параметр style определяет элементы стиля (например, пробелы, символ знака разделителя группы или символ десятичной запятой), допустимые в параметре value для успешной операции синтаксического анализа.The style parameter defines the style elements (such as white space, the positive or negative sign symbol, the group separator symbol, or the decimal point symbol) that are allowed in the value parameter for the parse operation to succeed. styles аргумент должен представлять собой сочетание битовых флагов из перечисления NumberStyles .styles must be a combination of bit flags from the NumberStyles enumeration. styleПараметр делает перегрузку этого метода полезной value , если содержит представление шестнадцатеричного значения, когда система счисления (десятичное или шестнадцатеричное), представленная, value известна только во время выполнения, или если требуется запретить пробел или символ знака в value .The style parameter makes this method overload useful when value contains the representation of a hexadecimal value, when the number system (decimal or hexadecimal) represented by value is known only at run time, or when you want to disallow white space or a sign symbol in value.

В зависимости от значения style value параметр может включать следующие элементы:Depending on the value of style, the value parameter may include the following elements:

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

Если style включается NumberStyles.AllowHexSpecifier , value параметр может включать следующие элементы:If style includes NumberStyles.AllowHexSpecifier, the value parameter may include the following elements:

[WS] хексдигитс[WS][ws]hexdigits[ws]

Элементы в квадратных скобках ([и]) являются необязательными.Elements in square brackets ([ and ]) are optional. Каждый из элементов описан в таблице ниже.The following table describes each element.

ЭлементElement ОписаниеDescription
wsws Необязательный пробел.Optional white space. Пробел может присутствовать в начале value style , если включает NumberStyles.AllowLeadingWhite флаг, и может находиться в конце, value Если style включает NumberStyles.AllowTrailingWhite флаг.White space can appear at the start of value if style includes the NumberStyles.AllowLeadingWhite flag, and it can appear at the end of value if style includes the NumberStyles.AllowTrailingWhite flag.
$ Символ валюты, зависящий от языка и региональных параметров.A culture-specific currency symbol. Его расположение в определяется value NumberFormatInfo.CurrencyNegativePattern свойствами и языка и NumberFormatInfo.CurrencyPositivePattern региональных параметров, указанными в provider параметре.Its position in value is defined by the NumberFormatInfo.CurrencyNegativePattern and NumberFormatInfo.CurrencyPositivePattern properties of the culture indicated by the provider parameter. Символ валюты текущего языка и региональных параметров может отображаться в, value Если style включает NumberStyles.AllowCurrencySymbol флаг.The current culture's currency symbol can appear in value if style includes the NumberStyles.AllowCurrencySymbol flag.
signsign Необязательный знак.An optional sign. Знак может отображаться в начале value style , если включает NumberStyles.AllowLeadingSign флаг, и может находиться в конце, value Если style включает NumberStyles.AllowTrailingSign флаг.The sign can appear at the start of value if style includes the NumberStyles.AllowLeadingSign flag, and it can appear at the end of value if style includes the NumberStyles.AllowTrailingSign flag. Круглые скобки могут использоваться в value , чтобы указать отрицательное значение, если style включает NumberStyles.AllowParentheses флаг.Parentheses can be used in value to indicate a negative value if style includes the NumberStyles.AllowParentheses flag.
digitsdigits

fractional_digitsfractional_digits

exponential_digitsexponential_digits
Последовательность цифр от 0 до 9.A sequence of digits from 0 through 9. Для fractional_digitsдопустима только цифра 0.For fractional_digits, only the digit 0 is valid.
,, Символ разделителя группы, зависящий от языка и региональных параметров.A culture-specific group separator symbol. Символ разделителя групп для языка и региональных параметров, заданный параметром, может быть указан в параметре, provider value Если style включает NumberStyles.AllowThousands флаг.The group separator symbol of the culture specified by provider can appear in value if style includes the NumberStyles.AllowThousands flag.
.. Символ десятичной запятой, зависящий от языка и региональных параметров.A culture-specific decimal point symbol. Символ десятичной запятой, заданный параметром, может быть указан в параметре, provider value Если style включает NumberStyles.AllowDecimalPoint флаг.The decimal point symbol of the culture designated by provider can appear in value if style includes the NumberStyles.AllowDecimalPoint flag. Только цифра 0 может присутствовать в виде дробной части для выполнения операции синтаксического анализа. Если fractional_digits включает любую другую цифру, FormatException создается исключение.Only the digit 0 can appear as a fractional digit for the parse operation to succeed; if fractional_digits includes any other digit, a FormatException is thrown.
EE Символ "e" или "E", указывающий, что значение представлено в экспоненциальной (экспоненциальной) нотации.The "e" or "E" character, which indicates that the value is represented in exponential (scientific) notation. valueПараметр может представлять число в экспоненциальной нотации style , если включает NumberStyles.AllowExponent флаг.The value parameter can represent a number in exponential notation if style includes the NumberStyles.AllowExponent flag.
хексдигитсhexdigits Последовательность шестнадцатеричных цифр от 0 до f или от 0 до F.A sequence of hexadecimal digits from 0 through f, or 0 through F.

Примечание

Все завершающие символы NUL (U + 0000) в s игнорируются операцией синтаксического анализа, независимо от значения style аргумента.Any terminating NUL (U+0000) characters in s are ignored by the parsing operation, regardless of the value of the style argument.

Объект, value содержащий только цифры (соответствующий NumberStyles.None стилю), всегда будет успешно проанализирован.A value with digits only (which corresponds to the NumberStyles.None style) always parses successfully. Большинство оставшихся элементов NumberStyles управляют элементами управления, которые могут присутствовать, но не обязательно должны присутствовать в value .Most of the remaining NumberStyles members control elements that may be present, but are not required to be present, in value. В следующей таблице показано, как отдельные NumberStyles члены влияют на элементы, которые могут присутствовать в value .The following table indicates how individual NumberStyles members affect the elements that may be present in value.

Значение NumberStylesNumberStyles value Разрешенные в значениях элементы в дополнение к цифрамElements permitted in value in addition to digits
None Только элемент digits .The digits element only.
AllowDecimalPoint Элементы десятичной запятой (.) и дробные разряды .The decimal point (.) and fractional-digits elements.
AllowExponent Символ "e" или "E", который указывает на экспоненциальную нотацию.The "e" or "E" character, which indicates exponential notation. Вместе с exponential_digits.along with exponential_digits.
AllowLeadingWhite Элемент WS в начале value .The ws element at the start of value.
AllowTrailingWhite Элемент WS в конце value .The ws element at the end of value.
AllowLeadingSign Элемент Sign в начале value .The sign element at the start of value.
AllowTrailingSign Элемент Sign в конце value .The sign element at the end of value.
AllowParentheses Элемент Sign в виде круглых скобок, охватывающих числовое значение.The sign element in the form of parentheses enclosing the numeric value.
AllowThousands Элемент разделителя групп (,).The group separator (,) element.
AllowCurrencySymbol Элемент Currency ($).The currency ($) element.
Currency Все элементы.All elements. Однако value не может представлять шестнадцатеричное число или число в экспоненциальной нотации.However, value cannot represent a hexadecimal number or a number in exponential notation.
Float Элемент WS в начале или конце value , знак в начале value и символ десятичной запятой (.).The ws element at the start or end of value, sign at the start of value, and the decimal point (.) symbol. valueПараметр также может использовать экспоненциальную нотацию.The value parameter can also use exponential notation.
Number wsЭлементы, sign , разделители групп (,) и десятичной запятой (.).The ws, sign, group separator (,), and decimal point (.) elements.
Any Все элементы.All elements. Однако value не может представлять шестнадцатеричное число.However, value cannot represent a hexadecimal number.

В отличие от других NumberStyles значений, допускающих, но не требующих наличия определенных элементов стиля в value , NumberStyles.AllowHexSpecifier значение стиля означает, что отдельные числовые символы в value всегда будут интерпретироваться как шестнадцатеричные символы.Unlike the other NumberStyles values, which allow for but do not require the presence of particular style elements in value, the NumberStyles.AllowHexSpecifier style value means that the individual numeric characters in value are always interpreted as hexadecimal characters. Допустимые шестнадцатеричные символы: 0-9, A-F и A-f.Valid hexadecimal characters are 0-9, A-F, and a-f. Единственными другими флагами, которые можно сочетать с style параметром, являются NumberStyles.AllowLeadingWhite и NumberStyles.AllowTrailingWhite .The only other flags that can be combined with the style parameter are NumberStyles.AllowLeadingWhite and NumberStyles.AllowTrailingWhite. ( NumberStyles Перечисление включает в себя стиль составного числа, HexNumber включающий оба флага пробела.)(The NumberStyles enumeration includes a composite number style, HexNumber, that includes both white-space flags.)

providerПараметр является IFormatProvider реализацией.The provider parameter is an IFormatProvider implementation. Его GetFormat метод возвращает NumberFormatInfo объект, предоставляющий сведения о формате для определенного языка и региональных параметров value .Its GetFormat method returns a NumberFormatInfo object that provides culture-specific information about the format of value. Как правило, provider может принимать одно из следующих действий:Typically, provider can be any one of the following:

  • CultureInfoОбъект, представляющий язык и региональные параметры, которые предоставляют сведения о форматировании чисел.A CultureInfo object that represents the culture that provides numeric formatting information. Его GetFormat метод возвращает NumberFormatInfo объект, предоставляющий сведения о форматировании чисел.Its GetFormat method returns the NumberFormatInfo object that provides numeric formatting information.

  • NumberFormatInfoОбъект, предоставляющий сведения о форматировании.A NumberFormatInfo object that provides formatting information. (Его реализация GetFormat просто возвращает сам себя.)(Its implementation of GetFormat just returns itself.)

  • Пользовательский объект, реализующий интерфейс IFormatProvider и использующий GetFormat метод для создания экземпляра и возврата NumberFormatInfo объекта, предоставляющего сведения о форматировании.A custom object that implements IFormatProvider and uses the GetFormat method to instantiate and return the NumberFormatInfo object that provides formatting information.

Если provider параметр имеет значение null , NumberFormatInfo используется объект для текущего языка и региональных параметров.If provider is null, the NumberFormatInfo object for the current culture is used.

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

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

Parse(String, IFormatProvider)

Преобразует строковое представление числа в указанном формате, связанном с определенным языком и региональными параметрами, в его эквивалент типа BigInteger.Converts the string representation of a number in a specified culture-specific format to its BigInteger equivalent.

public:
 static System::Numerics::BigInteger Parse(System::String ^ value, IFormatProvider ^ provider);
public static System.Numerics.BigInteger Parse (string value, IFormatProvider provider);
public static System.Numerics.BigInteger Parse (string value, IFormatProvider? provider);
static member Parse : string * IFormatProvider -> System.Numerics.BigInteger
Public Shared Function Parse (value As String, provider As IFormatProvider) As BigInteger

Параметры

value
String

Строка, содержащая преобразуемое число.A string that contains a number to convert.

provider
IFormatProvider

Объект, предоставляющий сведения о форматировании параметра value в зависимости от языка и региональных параметров.An object that provides culture-specific formatting information about value.

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

BigInteger

Значение, эквивалентное числу, которое задается параметром value.A value that is equivalent to the number specified in the value parameter.

Исключения

value имеет значение null.value is null.

value имеет неправильный формат.value is not in the correct format.

Примеры

В следующих примерах показано два способа определения тильды (~) в качестве знака отрицательного числа для форматирования BigInteger значений.The following examples show two ways to define the tilde (~) as a negative sign for formatting BigInteger values. Обратите внимание, что для вывода BigInteger значений в том же формате, что и в исходных строках, код должен вызвать BigInteger.ToString(IFormatProvider) метод и передать ему NumberFormatInfo объект, предоставляющий сведения о форматировании.Note that to display the BigInteger values in the same format as the original strings, your code must call the BigInteger.ToString(IFormatProvider) method and pass it the NumberFormatInfo object that provides formatting information.

В первом примере определяется класс, который реализует интерфейс IFormatProvider и использует GetFormat метод для возврата NumberFormatInfo объекта, предоставляющего сведения о форматировании.The first example defines a class that implements IFormatProvider and uses the GetFormat method to return the NumberFormatInfo object that provides formatting information.

public class BigIntegerFormatProvider : IFormatProvider
{
   public object GetFormat(Type formatType)
   {
      if (formatType == typeof(NumberFormatInfo))
      {
         NumberFormatInfo numberFormat = new NumberFormatInfo();
         numberFormat.NegativeSign = "~";
         return numberFormat;
      }
      else
      {
         return null;
      }
   }
}
Public Class BigIntegerFormatProvider : Implements IFormatProvider
   Public Function GetFormat(formatType As Type) As Object _
                            Implements IFormatProvider.GetFormat
      If formatType Is GetType(NumberFormatInfo) Then
         Dim numberFormat As New NumberFormatInfo
         numberFormat.NegativeSign = "~"
         Return numberFormat
      Else
         Return Nothing
      End If      
   End Function
End Class

BigIntegerЭкземпляр объекта можно создать с помощью следующего кода:A BigInteger object can then be instantiated with the following code:

BigInteger number = BigInteger.Parse("~6354129876", new BigIntegerFormatProvider());
// Display value using same formatting information
Console.WriteLine(number.ToString(new BigIntegerFormatProvider()));
// Display value using formatting of current culture
Console.WriteLine(number);
Dim number As BigInteger = BigInteger.Parse("~6354129876", New BigIntegerFormatProvider)
' Display value using same formatting information
Console.WriteLine(number.ToString(New BigIntegerFormatProvider))
' Display value using formatting of current culture
Console.WriteLine(number)

Второй пример более прост.The second example is more straightforward. Он передает NumberFormatInfo объект, предоставляющий сведения о форматировании provider параметру.It passes the NumberFormatInfo object that provides formatting information to the provider parameter.

NumberFormatInfo fmt = new NumberFormatInfo();
fmt.NegativeSign = "~";

BigInteger number = BigInteger.Parse("~6354129876", fmt);
// Display value using same formatting information
Console.WriteLine(number.ToString(fmt));
// Display value using formatting of current culture
Console.WriteLine(number);
Dim fmt As New NumberFormatInfo()
fmt.NegativeSign = "~"

Dim number As BigInteger = BigInteger.Parse("~6354129876", fmt)
' Display value using same formatting information
Console.WriteLine(number.ToString(fmt))
' Display value using formatting of current culture
Console.WriteLine(number)

Комментарии

Параметр value должен быть строковым представлением числа в следующей форме:The value parameter should be the string representation of a number in the following form:

[WS] [Sign]цифры[*WS][ws][sign]digits[ws]

Элементы в квадратных скобках ([и]) являются необязательными.Elements in square brackets ([ and ]) are optional. Каждый из элементов описан в таблице ниже.The following table describes each element.

ЭлементElement ОписаниеDescription
wsws Необязательный пробел.Optional white space.
signsign Необязательный знак.An optional sign. Допустимые символы знака определяются NumberFormatInfo.NegativeSign свойствами и NumberFormatInfo.PositiveSign NumberFormatInfo объекта, возвращаемыми provider GetFormat методом объекта.Valid sign characters are determined by the NumberFormatInfo.NegativeSign and NumberFormatInfo.PositiveSign properties of the NumberFormatInfo object that is returned by the provider object's GetFormat method.
digitsdigits Последовательность цифр в диапазоне от 0 до 9.A sequence of digits ranging from 0 to 9. Все ведущие нули игнорируются.Any leading zeros are ignored.

Примечание

Строка, заданная value параметром, интерпретируется с использованием NumberStyles.Integer стиля.The string specified by the value parameter is interpreted using the NumberStyles.Integer style. Он не может содержать разделители групп или десятичный разделитель и не может иметь дробную часть.It cannot contain any group separators or decimal separator, and it cannot have a decimal portion.

Важно!

При использовании Parse метода для приема-передачи строкового представления BigInteger значения, выводимого ToString методом, следует использовать BigInteger.ToString(String) метод с описателем формата R для создания строкового представления BigInteger значения.If you use the Parse method to round-trip the string representation of a BigInteger value that was output by the ToString method, you should use the BigInteger.ToString(String) method with the "R" format specifier to generate the string representation of the BigInteger value. В противном случае строковое представление BigInteger сохраняет только 50 наиболее значимых цифр исходного значения, а данные могут быть потеряны при использовании Parse метода для восстановления BigInteger значения.Otherwise, the string representation of the BigInteger preserves only the 50 most significant digits of the original value, and data may be lost when you use the Parse method to restore the BigInteger value.

providerПараметр — это IFormatProvider реализация, метод которой GetFormat возвращает NumberFormatInfo объект, предоставляющий сведения об особенностях форматирования, связанных с языком и региональными параметрами.The provider parameter is an IFormatProvider implementation whose GetFormat method returns a NumberFormatInfo object that provides culture-specific formatting information. При Parse(String, IFormatProvider) вызове метода он вызывает provider GetFormat метод параметра и передает ему Type объект, представляющий NumberFormatInfo тип.When the Parse(String, IFormatProvider) method is invoked, it calls the provider parameter's GetFormat method and passes it a Type object that represents the NumberFormatInfo type. GetFormatЗатем метод возвращает NumberFormatInfo объект, предоставляющий сведения о формате value параметра.The GetFormat method then returns the NumberFormatInfo object that provides information about the format of the value parameter. Существует три способа использования provider параметра для предоставления сведений о пользовательском форматировании операции синтаксического анализа:There are three ways to use the provider parameter to supply custom formatting information to the parse operation:

  • Можно передать CultureInfo объект, представляющий язык и региональные параметры, которые предоставляют сведения о форматировании.You can pass a CultureInfo object that represents the culture that supplies formatting information. Его GetFormat метод возвращает NumberFormatInfo объект, предоставляющий сведения о форматировании числовых значений для этого языка и региональных параметров.Its GetFormat method returns the NumberFormatInfo object that provides numeric formatting information for that culture.

  • Можно передать фактический NumberFormatInfo объект, предоставляющий сведения о форматировании чисел.You can pass the actual NumberFormatInfo object that provides numeric formatting information. (Его реализация GetFormat просто возвращает сам себя.)(Its implementation of GetFormat just returns itself.)

  • Можно передать пользовательский объект, реализующий интерфейс IFormatProvider .You can pass a custom object that implements IFormatProvider. Его GetFormat метод создает экземпляр и возвращает NumberFormatInfo объект, предоставляющий сведения о форматировании.Its GetFormat method instantiates and returns the NumberFormatInfo object that provides formatting information.

Если provider имеет значение null , форматирование value интерпретируется на основе NumberFormatInfo объекта текущего языка и региональных параметров.If provider is null, the formatting of value is interpreted based on the NumberFormatInfo object of the current culture.

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

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

Parse(String, NumberStyles, IFormatProvider)

Преобразует строковое представление числа в указанном стиле и формате, связанном с определенным языком и региональными параметрами, в его эквивалент типа BigInteger.Converts the string representation of a number in a specified style and culture-specific format to its BigInteger equivalent.

public:
 static System::Numerics::BigInteger Parse(System::String ^ value, System::Globalization::NumberStyles style, IFormatProvider ^ provider);
public static System.Numerics.BigInteger Parse (string value, System.Globalization.NumberStyles style, IFormatProvider provider);
public static System.Numerics.BigInteger Parse (string value, System.Globalization.NumberStyles style, IFormatProvider? provider);
static member Parse : string * System.Globalization.NumberStyles * IFormatProvider -> System.Numerics.BigInteger
Public Shared Function Parse (value As String, style As NumberStyles, provider As IFormatProvider) As BigInteger

Параметры

value
String

Строка, содержащая преобразуемое число.A string that contains a number to convert.

style
NumberStyles

Побитовое сочетание значений перечисления, которое показывает разрешенный формат параметра value.A bitwise combination of the enumeration values that specify the permitted format of value.

provider
IFormatProvider

Объект, предоставляющий сведения о форматировании параметра value в зависимости от языка и региональных параметров.An object that provides culture-specific formatting information about value.

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

BigInteger

Значение, эквивалентное числу, которое задается параметром value.A value that is equivalent to the number specified in the value parameter.

Исключения

style не является значением NumberStyles.style is not a NumberStyles value.

-или--or- style включает флаги AllowHexSpecifier и HexNumber вместе с другим значениями.style includes the AllowHexSpecifier or HexNumber flag along with another value.

value имеет значение null.value is null.

value не соответствует образцу ввода, заданному style.value does not comply with the input pattern specified by style.

Примеры

В следующем примере выполняется несколько вызовов к Parse(String, NumberStyles, IFormatProvider) методу с использованием различных сочетаний значений для style provider параметров и.The following example makes several calls to the Parse(String, NumberStyles, IFormatProvider) method using various combinations of values for the style and provider parameters.

// Call parse with default values of style and provider
Console.WriteLine(BigInteger.Parse("  -300   ",
                  NumberStyles.Integer, CultureInfo.CurrentCulture));
// Call parse with default values of style and provider supporting tilde as negative sign
Console.WriteLine(BigInteger.Parse("   ~300  ",
                                   NumberStyles.Integer, new BigIntegerFormatProvider()));
// Call parse with only AllowLeadingWhite and AllowTrailingWhite
// Exception thrown because of presence of negative sign
try
{
   Console.WriteLine(BigInteger.Parse("    ~300   ",
                                NumberStyles.AllowLeadingWhite | NumberStyles.AllowTrailingWhite,
                                new BigIntegerFormatProvider()));
}
catch (FormatException e)
{
   Console.WriteLine("{0}: \n   {1}", e.GetType().Name, e.Message);
}
// Call parse with only AllowHexSpecifier
// Exception thrown because of presence of negative sign
try
{
   Console.WriteLine(BigInteger.Parse("-3af", NumberStyles.AllowHexSpecifier,
                                      new BigIntegerFormatProvider()));
}
catch (FormatException e)
{
   Console.WriteLine("{0}: \n   {1}", e.GetType().Name, e.Message);
}
// Call parse with only NumberStyles.None
// Exception thrown because of presence of white space and sign
try
{
   Console.WriteLine(BigInteger.Parse(" -300 ", NumberStyles.None,
                                      new BigIntegerFormatProvider()));
}
catch (FormatException e)
{
   Console.WriteLine("{0}: \n   {1}", e.GetType().Name, e.Message);
}
// The example displays the followingoutput:
//       -300
//       -300
//       FormatException:
//          The value could not be parsed.
//       FormatException:
//          The value could not be parsed.
//       FormatException:
//          The value could not be parsed.
' Call parse with default values of style and provider
Console.WriteLine(BigInteger.Parse("  -300   ", _
                  NumberStyles.Integer, CultureInfo.CurrentCulture))
' Call parse with default values of style and provider supporting tilde as negative sign
Console.WriteLine(BigInteger.Parse("   ~300  ", _
                                   NumberStyles.Integer, New BigIntegerFormatProvider()))
' Call parse with only AllowLeadingWhite and AllowTrailingWhite
' Exception thrown because of presence of negative sign
Try
   Console.WriteLIne(BigInteger.Parse("    ~300   ", _
                                      NumberStyles.AllowLeadingWhite Or NumberStyles.AllowTrailingWhite, _
                                      New BigIntegerFormatProvider()))
Catch e As FormatException
   Console.WriteLine("{0}: {1}   {2}", e.GetType().Name, vbCrLf, e.Message)
End Try                                   
' Call parse with only AllowHexSpecifier
' Exception thrown because of presence of negative sign
Try
   Console.WriteLIne(BigInteger.Parse("-3af", NumberStyles.AllowHexSpecifier, _
                                      New BigIntegerFormatProvider()))
Catch e As FormatException
   Console.WriteLine("{0}: {1}   {2}", e.GetType().Name, vbCrLf, e.Message)
End Try                                 
' Call parse with only NumberStyles.None
' Exception thrown because of presence of white space and sign
Try
   Console.WriteLIne(BigInteger.Parse(" -300 ", NumberStyles.None, _
                                      New BigIntegerFormatProvider()))
Catch e As FormatException
   Console.WriteLine("{0}: {1}   {2}", e.GetType().Name, vbCrLf, e.Message)
End Try
' The example displays the following output:
'       -300
'       -300
'       FormatException:
'          The value could not be parsed.
'       FormatException:
'          The value could not be parsed.
'       FormatException:
'          The value could not be parsed.            

Несколько отдельных вызовов Parse(String, NumberStyles, IFormatProvider) метода передают экземпляр следующего BigIntegerFormatProvider класса, который определяет тильду (~) как знак отрицательного числа.A number of the individual calls to the Parse(String, NumberStyles, IFormatProvider) method pass an instance of the following BigIntegerFormatProvider class, which defines a tilde (~) as the negative sign.

public class BigIntegerFormatProvider : IFormatProvider
{
   public object GetFormat(Type formatType)
   {
      if (formatType == typeof(NumberFormatInfo))
      {
         NumberFormatInfo numberFormat = new NumberFormatInfo();
         numberFormat.NegativeSign = "~";
         return numberFormat;
      }
      else
      {
         return null;
      }
   }
}
Public Class BigIntegerFormatProvider : Implements IFormatProvider
   Public Function GetFormat(formatType As Type) As Object _
                            Implements IFormatProvider.GetFormat
      If formatType Is GetType(NumberFormatInfo) Then
         Dim numberFormat As New NumberFormatInfo
         numberFormat.NegativeSign = "~"
         Return numberFormat
      Else
         Return Nothing
      End If      
   End Function
End Class

Комментарии

Параметр style определяет элементы стиля (например, пробелы, символ знака разделителя группы или символ десятичной запятой), допустимые в параметре value для успешной операции синтаксического анализа.The style parameter defines the style elements (such as white space, the positive or negative sign symbol, the group separator symbol, or the decimal point symbol) that are allowed in the value parameter for the parse operation to succeed. styles аргумент должен представлять собой сочетание битовых флагов из перечисления NumberStyles .styles must be a combination of bit flags from the NumberStyles enumeration. styleПараметр делает перегрузку этого метода полезной value , если содержит строковое представление шестнадцатеричного значения, когда система счисления (десятичная или шестнадцатеричная), представленная, value известна только во время выполнения или если требуется запретить пробелы или символы знака в value .The style parameter makes this method overload useful when value contains the string representation of a hexadecimal value, when the number system (decimal or hexadecimal) represented by value is known only at run time, or when you want to disallow white space or a sign symbol in value.

В зависимости от значения style value параметр может включать следующие элементы:Depending on the value of style, the value parameter may include the following elements:

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

Если style включается NumberStyles.AllowHexSpecifier , value параметр может включать следующие элементы:If style includes NumberStyles.AllowHexSpecifier, the value parameter may include the following elements:

[WS] хексдигитс[WS][ws]hexdigits[ws]

Элементы в квадратных скобках ([и]) являются необязательными.Elements in square brackets ([ and ]) are optional. Каждый из элементов описан в таблице ниже.The following table describes each element.

ЭлементElement ОписаниеDescription
wsws Необязательный пробел.Optional white space. Пробел может присутствовать в начале value style , если включает NumberStyles.AllowLeadingWhite флаг, и может находиться в конце, value Если style включает NumberStyles.AllowTrailingWhite флаг.White space can appear at the start of value if style includes the NumberStyles.AllowLeadingWhite flag, and it can appear at the end of value if style includes the NumberStyles.AllowTrailingWhite flag.
$ Символ валюты, зависящий от языка и региональных параметров.A culture-specific currency symbol. Его расположение в строке определяется NumberFormatInfo.CurrencyNegativePattern NumberFormatInfo.CurrencyPositivePattern свойствами и языка и региональных параметров, указанными в provider параметре.Its position in the string is defined by the NumberFormatInfo.CurrencyNegativePattern and NumberFormatInfo.CurrencyPositivePattern properties of the culture indicated by the provider parameter. Символ валюты текущего языка и региональных параметров может отображаться в, value Если style включает NumberStyles.AllowCurrencySymbol флаг.The current culture's currency symbol can appear in value if style includes the NumberStyles.AllowCurrencySymbol flag.
signsign Необязательный знак.An optional sign. Знак может отображаться в начале value style , если включает NumberStyles.AllowLeadingSign флаг, и может находиться в конце, value Если style включает NumberStyles.AllowTrailingSign флаг.The sign can appear at the start of value if style includes the NumberStyles.AllowLeadingSign flag, and it can appear at the end of value if style includes the NumberStyles.AllowTrailingSign flag. Круглые скобки могут использоваться в value , чтобы указать отрицательное значение, если style включает NumberStyles.AllowParentheses флаг.Parentheses can be used in value to indicate a negative value if style includes the NumberStyles.AllowParentheses flag.
digitsdigits

fractional_digitsfractional_digits

exponential_digitsexponential_digits
Последовательность цифр от 0 до 9.A sequence of digits from 0 through 9. Для fractional_digitsдопустима только цифра 0.For fractional_digits, only the digit 0 is valid.
,, Символ разделителя группы, зависящий от языка и региональных параметров.A culture-specific group separator symbol. Символ разделителя групп для языка и региональных параметров, заданный параметром, может быть указан в параметре, provider value Если style включает NumberStyles.AllowThousands флаг.The group separator symbol of the culture specified by provider can appear in value if style includes the NumberStyles.AllowThousands flag.
.. Символ десятичной запятой, зависящий от языка и региональных параметров.A culture-specific decimal point symbol. Символ десятичной запятой, заданный параметром, может быть указан в параметре, provider value Если style включает NumberStyles.AllowDecimalPoint флаг.The decimal point symbol of the culture designated by provider can appear in value if style includes the NumberStyles.AllowDecimalPoint flag. Только цифра 0 может присутствовать в виде дробной части для выполнения операции синтаксического анализа. Если fractional_digits включает любую другую цифру, FormatException создается исключение.Only the digit 0 can appear as a fractional digit for the parse operation to succeed; if fractional_digits includes any other digit, a FormatException is thrown.
EE Символ "e" или "E", указывающий, что значение представлено в экспоненциальной (экспоненциальной) нотации.The "e" or "E" character, which indicates that the value is represented in exponential (scientific) notation. valueПараметр может представлять число в экспоненциальной нотации style , если включает NumberStyles.AllowExponent флаг.The value parameter can represent a number in exponential notation if style includes the NumberStyles.AllowExponent flag.
хексдигитсhexdigits Последовательность шестнадцатеричных цифр от 0 до f или от 0 до F.A sequence of hexadecimal digits from 0 through f, or 0 through F.

Примечание

Все завершающие символы NUL (U + 0000) в s игнорируются операцией синтаксического анализа, независимо от значения style аргумента.Any terminating NUL (U+0000) characters in s are ignored by the parsing operation, regardless of the value of the style argument.

Строка с цифрами (которая соответствует NumberStyles.None стилю) всегда будет успешно проанализирована.A string with digits only (which corresponds to the NumberStyles.None style) always parses successfully. Большинство оставшихся элементов NumberStyles управляют элементами управления, которые могут присутствовать, но не обязательно должны присутствовать во входной строке.Most of the remaining NumberStyles members control elements that may be present, but are not required to be present, in the input string. В следующей таблице показано, как отдельные NumberStyles члены влияют на элементы, которые могут присутствовать в value .The following table indicates how individual NumberStyles members affect the elements that may be present in value.

Значение NumberStylesNumberStyles value Разрешенные в значениях элементы в дополнение к цифрамElements permitted in value in addition to digits
None Только элемент digits .The digits element only.
AllowDecimalPoint Элементы десятичной запятой (.) и дробные разряды .The decimal point (.) and fractional-digits elements.
AllowExponent Символ "e" или "E", который указывает на экспоненциальную нотацию.The "e" or "E" character, which indicates exponential notation. Вместе с exponential_digits.along with exponential_digits.
AllowLeadingWhite Элемент WS в начале value .The ws element at the start of value.
AllowTrailingWhite Элемент WS в конце value .The ws element at the end of value.
AllowLeadingSign Элемент Sign в начале value .The sign element at the start of value.
AllowTrailingSign Элемент Sign в конце value .The sign element at the end of value.
AllowParentheses Элемент Sign в виде круглых скобок, охватывающих числовое значение.The sign element in the form of parentheses enclosing the numeric value.
AllowThousands Элемент разделителя групп (,).The group separator (,) element.
AllowCurrencySymbol Элемент Currency ($).The currency ($) element.
Currency Все элементы.All elements. Однако value не может представлять шестнадцатеричное число или число в экспоненциальной нотации.However, value cannot represent a hexadecimal number or a number in exponential notation.
Float Элемент WS в начале или конце value , знак в начале value и символ десятичной запятой (.).The ws element at the start or end of value, sign at the start of value, and the decimal point (.) symbol. valueПараметр также может использовать экспоненциальную нотацию.The value parameter can also use exponential notation.
Number wsЭлементы, sign , разделители групп (,) и десятичной запятой (.).The ws, sign, group separator (,), and decimal point (.) elements.
Any Все элементы.All elements. Однако value не может представлять шестнадцатеричное число.However, value cannot represent a hexadecimal number.

Важно!

При использовании Parse метода для приема-передачи строкового представления BigInteger значения, выводимого ToString методом, следует использовать BigInteger.ToString(String) метод с описателем формата R для создания строкового представления BigInteger значения.If you use the Parse method to round-trip the string representation of a BigInteger value that was output by the ToString method, you should use the BigInteger.ToString(String) method with the "R" format specifier to generate the string representation of the BigInteger value. В противном случае строковое представление BigInteger сохраняет только 50 наиболее значимых цифр исходного значения, а данные могут быть потеряны при использовании Parse метода для восстановления BigInteger значения.Otherwise, the string representation of the BigInteger preserves only the 50 most significant digits of the original value, and data may be lost when you use the Parse method to restore the BigInteger value.

В отличие от других NumberStyles значений, допускающих, но не требующих наличия определенных элементов стиля в value , NumberStyles.AllowHexSpecifier значение стиля означает, что отдельные числовые символы в value всегда будут интерпретироваться как шестнадцатеричные символы.Unlike the other NumberStyles values, which allow for but do not require the presence of particular style elements in value, the NumberStyles.AllowHexSpecifier style value means that the individual numeric characters in value are always interpreted as hexadecimal characters. Допустимые шестнадцатеричные символы: 0-9, A-F и A-f.Valid hexadecimal characters are 0-9, A-F, and a-f. Единственными другими флагами, которые можно сочетать с style параметром, являются NumberStyles.AllowLeadingWhite и NumberStyles.AllowTrailingWhite .The only other flags that can be combined with the style parameter are NumberStyles.AllowLeadingWhite and NumberStyles.AllowTrailingWhite. ( NumberStyles Перечисление включает в себя стиль составного числа, HexNumber включающий оба флага пробела.)(The NumberStyles enumeration includes a composite number style, HexNumber, that includes both white-space flags.)

Примечание

Если value является строковым представлением шестнадцатеричного числа, ему не может предшествовать любое декорирование (например, 0x или &h ), которое отличает его как шестнадцатеричное число.If value is the string representation of a hexadecimal number, it cannot be preceded by any decoration (such as 0x or &h) that differentiates it as a hexadecimal number. Это приводит к сбою преобразования.This causes the conversion to fail.

Если value является шестнадцатеричной строкой, Parse(String, NumberStyles) метод интерпретирует value как отрицательное число, хранящееся в двух представлениях дополнения, если первые две шестнадцатеричные цифры больше или равны 0x80 .If value is a hexadecimal string, the Parse(String, NumberStyles) method interprets value as a negative number stored by using two's complement representation if its first two hexadecimal digits are greater than or equal to 0x80. Иными словами, метод интерпретирует бит наивысшего порядка первого байта в value качестве бита знака.In other words, the method interprets the highest-order bit of the first byte in value as the sign bit. Чтобы убедиться, что шестнадцатеричная строка правильно интерпретируется как положительное число, первая цифра в value должна иметь нулевое значение.To make sure that a hexadecimal string is correctly interpreted as a positive number, the first digit in value must have a value of zero. Например, метод интерпретирует 0x80 как отрицательное значение, но интерпретирует либо 0x080 или 0x0080 как положительное значение.For example, the method interprets 0x80 as a negative value, but it interprets either 0x080 or 0x0080 as a positive value. В следующем примере показано различие между шестнадцатеричными строками, представляющими отрицательные и положительные значения.The following example illustrates the difference between hexadecimal strings that represent negative and positive values.

using System;
using System.Globalization;
using System.Numerics;

public class Example
{
   public static void Main()
   {
      string[] hexStrings = { "80", "E293", "F9A2FF", "FFFFFFFF",
                              "080", "0E293", "0F9A2FF", "0FFFFFFFF",
                              "0080", "00E293", "00F9A2FF", "00FFFFFFFF" };
      foreach (string hexString in hexStrings)
      {
         BigInteger number = BigInteger.Parse(hexString, NumberStyles.AllowHexSpecifier);
         Console.WriteLine("Converted 0x{0} to {1}.", hexString, number);
      }
   }
}
// The example displays the following output:
//       Converted 0x80 to -128.
//       Converted 0xE293 to -7533.
//       Converted 0xF9A2FF to -417025.
//       Converted 0xFFFFFFFF to -1.
//       Converted 0x080 to 128.
//       Converted 0x0E293 to 58003.
//       Converted 0x0F9A2FF to 16360191.
//       Converted 0x0FFFFFFFF to 4294967295.
//       Converted 0x0080 to 128.
//       Converted 0x00E293 to 58003.
//       Converted 0x00F9A2FF to 16360191.
//       Converted 0x00FFFFFFFF to 4294967295.
Imports System.Globalization
Imports System.Numerics

Module Example
   Public Sub Main()
      Dim hexStrings() As String = { "80", "E293", "F9A2FF", "FFFFFFFF", 
                                     "080", "0E293", "0F9A2FF", "0FFFFFFFF",  
                                     "0080", "00E293", "00F9A2FF", "00FFFFFFFF" }
      For Each hexString As String In hexStrings
         Dim number As BigInteger = BigInteger.Parse(hexString, NumberStyles.AllowHexSpecifier)
         Console.WriteLine("Converted 0x{0} to {1}.", hexString, number)
      Next         
   End Sub
End Module
' The example displays the following output:
'       Converted 0x80 to -128.
'       Converted 0xE293 to -7533.
'       Converted 0xF9A2FF to -417025.
'       Converted 0xFFFFFFFF to -1.
'       Converted 0x080 to 128.
'       Converted 0x0E293 to 58003.
'       Converted 0x0F9A2FF to 16360191.
'       Converted 0x0FFFFFFFF to 4294967295.
'       Converted 0x0080 to 128.
'       Converted 0x00E293 to 58003.
'       Converted 0x00F9A2FF to 16360191.
'       Converted 0x00FFFFFFFF to 4294967295.

providerПараметр является IFormatProvider реализацией.The provider parameter is an IFormatProvider implementation. Его GetFormat метод возвращает NumberFormatInfo объект, предоставляющий сведения о формате для определенного языка и региональных параметров value .Its GetFormat method returns a NumberFormatInfo object that provides culture-specific information about the format of value. Как правило, provider может принимать одно из следующих действий:Typically, provider can be any one of the following:

  • CultureInfoОбъект, представляющий язык и региональные параметры, которые предоставляют сведения о форматировании чисел.A CultureInfo object that represents the culture that provides numeric formatting information. Его GetFormat метод возвращает NumberFormatInfo объект, предоставляющий сведения о форматировании чисел.Its GetFormat method returns the NumberFormatInfo object that provides numeric formatting information.

  • NumberFormatInfoОбъект, предоставляющий сведения о форматировании.A NumberFormatInfo object that provides formatting information. (Его реализация GetFormat просто возвращает сам себя.)(Its implementation of GetFormat just returns itself.)

  • Пользовательский объект, реализующий интерфейс IFormatProvider и использующий GetFormat метод для создания экземпляра и возврата NumberFormatInfo объекта, предоставляющего сведения о форматировании.A custom object that implements IFormatProvider and uses the GetFormat method to instantiate and return the NumberFormatInfo object that provides formatting information.

Если provider параметр имеет значение null , NumberFormatInfo используется объект для текущего языка и региональных параметров.If provider is null, the NumberFormatInfo object for the current culture is used.

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

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

Parse(String)

Преобразует строковое представление числа в его эквивалент типа BigInteger.Converts the string representation of a number to its BigInteger equivalent.

public:
 static System::Numerics::BigInteger Parse(System::String ^ value);
public static System.Numerics.BigInteger Parse (string value);
static member Parse : string -> System.Numerics.BigInteger
Public Shared Function Parse (value As String) As BigInteger

Параметры

value
String

Строка, содержащая преобразуемое число.A string that contains the number to convert.

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

BigInteger

Значение, эквивалентное числу, которое задается параметром value.A value that is equivalent to the number specified in the value parameter.

Исключения

value имеет значение null.value is null.

value имеет неправильный формат.value is not in the correct format.

Примеры

В следующем примере используется Parse(String) метод для создания экземпляра двух BigInteger объектов.The following example uses the Parse(String) method to instantiate two BigInteger objects. Он умножает каждый объект на другое число, а затем вызывает Compare метод для определения связи между двумя значениями.It multiplies each object by another number and then calls the Compare method to determine the relationship between the two values.

string stringToParse = String.Empty;
try
{
   // Parse two strings.
   string string1, string2;
   string1 = "12347534159895123";
   string2 = "987654321357159852";
   stringToParse = string1;
   BigInteger number1 = BigInteger.Parse(stringToParse);
   Console.WriteLine("Converted '{0}' to {1:N0}.", stringToParse, number1);
   stringToParse = string2;
   BigInteger number2 = BigInteger.Parse(stringToParse);
   Console.WriteLine("Converted '{0}' to {1:N0}.", stringToParse, number2);
   // Perform arithmetic operations on the two numbers.
   number1 *= 3;
   number2 *= 2;
   // Compare the numbers.
   int result = BigInteger.Compare(number1, number2);
   switch (result)
   {
      case -1:
         Console.WriteLine("{0} is greater than {1}.", number2, number1);
         break;
      case 0:
         Console.WriteLine("{0} is equal to {1}.", number1, number2);
         break;
      case 1:
         Console.WriteLine("{0} is greater than {1}.", number1, number2);
         break;
   }
}
catch (FormatException)
{
   Console.WriteLine("Unable to parse {0}.", stringToParse);
}
// The example displays the following output:
//    Converted '12347534159895123' to 12,347,534,159,895,123.
//    Converted '987654321357159852' to 987,654,321,357,159,852.
//    1975308642714319704 is greater than 37042602479685369.
Dim stringToParse As String = String.Empty
Try
   ' Parse two strings.
   Dim string1, string2 As String
   string1 = "12347534159895123"
   string2 = "987654321357159852"
   stringToParse = string1
   Dim number1 As BigInteger = BigInteger.Parse(stringToParse)
   Console.WriteLine("Converted '{0}' to {1:N0}.", stringToParse, number1)
   stringToParse = string2
   Dim number2 As BigInteger = BigInteger.Parse(stringToParse)
   Console.WriteLine("Converted '{0}' to {1:N0}.", stringToParse, number2)
   ' Perform arithmetic operations on the two numbers.
   number1 *= 3
   number2 *= 2
   ' Compare the numbers.
   Select Case BigInteger.Compare(number1, number2)
      Case -1
         Console.WriteLine("{0} is greater than {1}.", number2, number1)
      Case 0
         Console.WriteLine("{0} is equal to {1}.", number1, number2)
      Case 1
         Console.WriteLine("{0} is greater than {1}.", number1, number2)
   End Select      
Catch e As FormatException
   Console.WriteLine("Unable to parse {0}.", stringToParse)
End Try
' The example displays the following output:
'    Converted '12347534159895123' to 12,347,534,159,895,123.
'    Converted '987654321357159852' to 987,654,321,357,159,852.
'    1975308642714319704 is greater than 37042602479685369.      

Комментарии

Параметр value должен быть строковым представлением числа в следующей форме.The value parameter should be the string representation of a number in the following form.

[WS] [Sign]цифры[*WS][ws][sign]digits[ws]

Элементы в квадратных скобках ([и]) являются необязательными.Elements in square brackets ([ and ]) are optional. Каждый из элементов описан в таблице ниже.The following table describes each element.

ЭлементElement ОписаниеDescription
wsws Необязательный пробел.Optional white space.
signsign Необязательный знак.An optional sign. Допустимые символы знака определяются NumberFormatInfo.NegativeSign свойствами и NumberFormatInfo.PositiveSign текущего языка и региональных параметров.Valid sign characters are determined by the NumberFormatInfo.NegativeSign and NumberFormatInfo.PositiveSign properties of the current culture.
digitsdigits Последовательность цифр в диапазоне от 0 до 9.A sequence of digits ranging from 0 to 9. Все ведущие нули игнорируются.Any leading zeros are ignored.

Примечание

Строка, заданная value параметром, интерпретируется с помощью NumberStyles.Integer стиля.The string specified by the value parameter is interpreted by using the NumberStyles.Integer style. Он не может содержать разделители групп или десятичный разделитель и не может иметь дробную часть.It cannot contain any group separators or decimal separator, and it cannot have a decimal portion.

valueПараметр анализируется с помощью сведений о форматировании в System.Globalization.NumberFormatInfo объекте, инициализированном для текущего языка и региональных параметров системы.The value parameter is parsed by using the formatting information in a System.Globalization.NumberFormatInfo object that is initialized for the current system culture. Для получения дополнительной информации см. NumberFormatInfo.CurrentInfo.For more information, see NumberFormatInfo.CurrentInfo. Чтобы выполнить синтаксический анализ строки с использованием сведений о форматировании определенного языка и региональных параметров, используйте Parse(String, IFormatProvider) метод.To parse a string by using the formatting information of a specific culture, use the Parse(String, IFormatProvider) method.

Важно!

При использовании Parse метода для приема-передачи строкового представления BigInteger значения, выводимого ToString методом, следует использовать BigInteger.ToString(String) метод с описателем формата R для создания строкового представления BigInteger значения.If you use the Parse method to round-trip the string representation of a BigInteger value that was output by the ToString method, you should use the BigInteger.ToString(String) method with the "R" format specifier to generate the string representation of the BigInteger value. В противном случае строковое представление BigInteger сохраняет только 50 наиболее значимых цифр исходного значения, а данные могут быть потеряны при использовании Parse метода для восстановления BigInteger значения.Otherwise, the string representation of the BigInteger preserves only the 50 most significant digits of the original value, and data may be lost when you use the Parse method to restore the BigInteger value.

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

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

Parse(String, NumberStyles)

Преобразует строковое представление числа с указанным стилем в его эквивалент в формате BigInteger.Converts the string representation of a number in a specified style to its BigInteger equivalent.

public:
 static System::Numerics::BigInteger Parse(System::String ^ value, System::Globalization::NumberStyles style);
public static System.Numerics.BigInteger Parse (string value, System.Globalization.NumberStyles style);
static member Parse : string * System.Globalization.NumberStyles -> System.Numerics.BigInteger
Public Shared Function Parse (value As String, style As NumberStyles) As BigInteger

Параметры

value
String

Строка, содержащая преобразуемое число.A string that contains a number to convert.

style
NumberStyles

Побитовое сочетание значений перечисления, которое показывает разрешенный формат параметра value.A bitwise combination of the enumeration values that specify the permitted format of value.

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

BigInteger

Значение, эквивалентное числу, которое задается параметром value.A value that is equivalent to the number specified in the value parameter.

Исключения

style не является значением NumberStyles.style is not a NumberStyles value.

-или--or- style включает флаги AllowHexSpecifier и HexNumber вместе с другим значениями.style includes the AllowHexSpecifier or HexNumber flag along with another value.

value имеет значение null.value is null.

value не соответствует образцу ввода, заданному NumberStyles.value does not comply with the input pattern specified by NumberStyles.

Примеры

В следующем примере показаны вызовы Parse(String, NumberStyles) метода с несколькими возможными значениями для style параметра.The following example illustrates calls to the Parse(String, NumberStyles) method with several possible values for the style parameter. В нем показано, как интерпретировать строку как шестнадцатеричное значение и как запретить пробелы и символы подписывания.It illustrates how to interpret a string as a hexadecimal value, and how to disallow spaces and sign symbols.

BigInteger number;
// Method should succeed (white space and sign allowed)
number = BigInteger.Parse("   -68054   ", NumberStyles.Integer);
Console.WriteLine(number);
// Method should succeed (string interpreted as hexadecimal)
number = BigInteger.Parse("68054", NumberStyles.AllowHexSpecifier);
Console.WriteLine(number);
// Method call should fail: sign not allowed
try
{
   number = BigInteger.Parse("   -68054  ", NumberStyles.AllowLeadingWhite
                                            | NumberStyles.AllowTrailingWhite);
   Console.WriteLine(number);
}
catch (FormatException e)
{
   Console.WriteLine(e.Message);
}
// Method call should fail: white space not allowed
try
{
   number = BigInteger.Parse("   68054  ", NumberStyles.AllowLeadingSign);
   Console.WriteLine(number);
}
catch (FormatException e)
{
   Console.WriteLine(e.Message);
}
//
// The method produces the following output:
//
//     -68054
//     426068
//     Input string was not in a correct format.
//     Input string was not in a correct format.
Dim number As BigInteger 
' Method should succeed (white space and sign allowed)
number = BigInteger.Parse("   -68054   ", NumberStyles.Integer)
Console.WriteLine(number)
' Method should succeed (string interpreted as hexadecimal)
number = BigInteger.Parse("68054", NumberStyles.AllowHexSpecifier)
Console.WriteLine(number)
' Method call should fail: sign not allowed
Try
   number = BigInteger.Parse("   -68054  ", NumberStyles.AllowLeadingWhite _
                                            Or NumberStyles.AllowTrailingWhite)
   Console.WriteLine(number)
Catch e As FormatException
   Console.WriteLine(e.Message)
End Try                                                     
' Method call should fail: white space not allowed
Try
   number = BigInteger.Parse("   68054  ", NumberStyles.AllowLeadingSign)
   Console.WriteLine(number)
Catch e As FormatException
   Console.WriteLine(e.Message)
End Try    
'
' The method produces the following output:
'
'     -68054
'     426068
'     Input string was not in a correct format.
'     Input string was not in a correct format.                                                 

Комментарии

Параметр style определяет элементы стиля (например, пробелы, символ знака разделителя группы или символ десятичной запятой), допустимые в параметре value для успешной операции синтаксического анализа.The style parameter defines the style elements (such as white space, the positive or negative sign symbol, the group separator symbol, or the decimal point symbol) that are allowed in the value parameter for the parse operation to succeed. styles аргумент должен представлять собой сочетание битовых флагов из перечисления NumberStyles .styles must be a combination of bit flags from the NumberStyles enumeration. styleПараметр делает перегрузку этого метода полезной value , если содержит строковое представление шестнадцатеричного значения, когда система счисления (десятичная или шестнадцатеричная), представленная, value известна только во время выполнения или если требуется запретить пробелы или символы знака в value .The style parameter makes this method overload useful when value contains the string representation of a hexadecimal value, when the number system (decimal or hexadecimal) represented by value is known only at run time, or when you want to disallow white space or a sign symbol in value.

В зависимости от значения style value параметр может включать следующие элементы:Depending on the value of style, the value parameter may include the following elements:

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

При style включении NumberStyles.AllowHexSpecifier value параметр может содержать следующие элементы:If style includes NumberStyles.AllowHexSpecifier, the value parameter may contain the following elements:

[WS] хексдигитс[WS][ws]hexdigits[ws]

Элементы в квадратных скобках ([и]) являются необязательными.Elements in square brackets ([ and ]) are optional. Каждый из элементов описан в таблице ниже.The following table describes each element.

ЭлементElement ОписаниеDescription
wsws Необязательный пробел.Optional white space. Пробел может присутствовать в начале value style , если включает NumberStyles.AllowLeadingWhite флаг, и может находиться в конце, value Если style включает NumberStyles.AllowTrailingWhite флаг.White space can appear at the start of value if style includes the NumberStyles.AllowLeadingWhite flag, and it can appear at the end of value if style includes the NumberStyles.AllowTrailingWhite flag.
$ Символ валюты, зависящий от языка и региональных параметров.A culture-specific currency symbol. Его расположение в строке определяется NumberFormatInfo.CurrencyNegativePattern NumberFormatInfo.CurrencyPositivePattern свойствами и текущего языка и региональных параметров.Its position in the string is defined by the NumberFormatInfo.CurrencyNegativePattern and NumberFormatInfo.CurrencyPositivePattern properties of the current culture. Символ валюты текущего языка и региональных параметров может отображаться в, value Если style включает NumberStyles.AllowCurrencySymbol флаг.The current culture's currency symbol can appear in value if style includes the NumberStyles.AllowCurrencySymbol flag.
signsign Необязательный знак.An optional sign. Знак может отображаться в начале value style , если включает NumberStyles.AllowLeadingSign флаг, и может находиться в конце, value Если style включает NumberStyles.AllowTrailingSign флаг.The sign can appear at the start of value if style includes the NumberStyles.AllowLeadingSign flag, and it can appear at the end of value if style includes the NumberStyles.AllowTrailingSign flag. Круглые скобки могут использоваться в value , чтобы указать отрицательное значение, если style включает NumberStyles.AllowParentheses флаг.Parentheses can be used in value to indicate a negative value if style includes the NumberStyles.AllowParentheses flag.
digitsdigits

fractional_digitsfractional_digits

exponential_digitsexponential_digits
Последовательность цифр от 0 до 9.A sequence of digits from 0 through 9. Для fractional_digitsдопустима только цифра 0.For fractional_digits, only the digit 0 is valid.
,, Символ разделителя группы, зависящий от языка и региональных параметров.A culture-specific group separator symbol. Разделитель групп текущего языка и региональных параметров может отображаться в, value Если style включает NumberStyles.AllowThousands флаг.The current culture's group separator can appear in value if style includes the NumberStyles.AllowThousands flag.
.. Символ десятичной запятой, зависящий от языка и региональных параметров.A culture-specific decimal point symbol. Символ десятичной запятой текущего языка и региональных параметров может присутствовать в, value Если style включает NumberStyles.AllowDecimalPoint флаг.The current culture's decimal point symbol can appear in value if style includes the NumberStyles.AllowDecimalPoint flag. Только цифра 0 может присутствовать в виде дробной части для выполнения операции синтаксического анализа. Если fractional_digits включает любую другую цифру, FormatException создается исключение.Only the digit 0 can appear as a fractional digit for the parse operation to succeed; if fractional_digits includes any other digit, a FormatException is thrown.
EE Символ "e" или "E", указывающий, что значение представлено в экспоненциальной (экспоненциальной) нотации.The "e" or "E" character, which indicates that the value is represented in exponential (scientific) notation. valueПараметр может представлять число в экспоненциальной нотации style , если включает NumberStyles.AllowExponent флаг.The value parameter can represent a number in exponential notation if style includes the NumberStyles.AllowExponent flag.
хексдигитсhexdigits Последовательность шестнадцатеричных цифр от 0 до f или от 0 до F.A sequence of hexadecimal digits from 0 through f, or 0 through F.

Примечание

Все завершающие символы NUL (U + 0000) в s игнорируются операцией синтаксического анализа, независимо от значения style аргумента.Any terminating NUL (U+0000) characters in s are ignored by the parsing operation, regardless of the value of the style argument.

Строка с цифрами (которая соответствует NumberStyles.None стилю) всегда будет успешно проанализирована.A string with digits only (which corresponds to the NumberStyles.None style) always parses successfully. Большинство оставшихся элементов NumberStyles управляют элементами управления, которые могут присутствовать, но не обязательно должны присутствовать во входной строке.Most of the remaining NumberStyles members control elements that may be present, but are not required to be present, in the input string. В следующей таблице показано, как отдельные NumberStyles члены влияют на элементы, которые могут присутствовать в value .The following table indicates how individual NumberStyles members affect the elements that may be present in value.

ЗначениеNumberStylesNumberStyles value Элементы, разрешенные в value в дополнение к цифрамElements permitted in value in addition to digits
None Только элемент digits .The digits element only.
AllowDecimalPoint Элементы десятичной запятой (.) и дробные разряды .The decimal point (.) and fractional-digits elements.
AllowExponent Символ "e" или "E", который указывает на экспоненциальную нотацию, а также exponential_digits.The "e" or "E" character, which indicates exponential notation, along with exponential_digits.
AllowLeadingWhite Элемент WS в начале value .The ws element at the start of value.
AllowTrailingWhite Элемент WS в конце value .The ws element at the end of value.
AllowLeadingSign Элемент Sign в начале value .The sign element at the start of value.
AllowTrailingSign Элемент Sign в конце value .The sign element at the end of value.
AllowParentheses Элемент Sign в виде круглых скобок, охватывающих числовое значение.The sign element in the form of parentheses enclosing the numeric value.
AllowThousands Элемент разделителя групп (,).The group separator (,) element.
AllowCurrencySymbol Элемент Currency ($).The currency ($) element.
Currency Все элементы.All elements. Однако value не может представлять шестнадцатеричное число или число в экспоненциальной нотации.However, value cannot represent a hexadecimal number or a number in exponential notation.
Float Элемент WS в начале или конце value , знак в начале value и символ десятичной запятой (.).The ws element at the start or end of value, sign at the start of value, and the decimal point (.) symbol. valueПараметр также может использовать экспоненциальную нотацию.The value parameter can also use exponential notation.
Number wsЭлементы, sign , разделители групп (,) и десятичной запятой (.).The ws, sign, group separator (,), and decimal point (.) elements.
Any Все элементы.All elements. Однако value не может представлять шестнадцатеричное число.However, value cannot represent a hexadecimal number.

Важно!

При использовании Parse метода для приема-передачи строкового представления BigInteger значения, выводимого ToString методом, следует использовать BigInteger.ToString(String) метод с описателем формата R для создания строкового представления BigInteger значения.If you use the Parse method to round-trip the string representation of a BigInteger value that was output by the ToString method, you should use the BigInteger.ToString(String) method with the "R" format specifier to generate the string representation of the BigInteger value. В противном случае строковое представление BigInteger сохраняет только 50 наиболее значимых цифр исходного значения, а данные могут быть потеряны при использовании Parse метода для восстановления BigInteger значения.Otherwise, the string representation of the BigInteger preserves only the 50 most significant digits of the original value, and data may be lost when you use the Parse method to restore the BigInteger value.

В отличие от других NumberStyles значений, допускающих, но не требующих наличия определенных элементов стиля в value , NumberStyles.AllowHexSpecifier значение стиля означает, что отдельные числовые символы в value всегда будут интерпретироваться как шестнадцатеричные символы.Unlike the other NumberStyles values, which allow for, but do not require, the presence of particular style elements in value, the NumberStyles.AllowHexSpecifier style value means that the individual numeric characters in value are always interpreted as hexadecimal characters. Допустимые шестнадцатеричные символы: 0-9, A-F и A-f.Valid hexadecimal characters are 0-9, A-F, and a-f. Единственными другими флагами, которые можно сочетать с style параметром, являются NumberStyles.AllowLeadingWhite и NumberStyles.AllowTrailingWhite .The only other flags that can be combined with the style parameter are NumberStyles.AllowLeadingWhite and NumberStyles.AllowTrailingWhite. ( NumberStyles Перечисление включает в себя стиль составного числа, HexNumber включающий оба флага пробела.)(The NumberStyles enumeration includes a composite number style, HexNumber, that includes both white-space flags.)

Примечание

Если value является строковым представлением шестнадцатеричного числа, ему не может предшествовать любое декорирование (например, 0x или &h ), которое отличает его как шестнадцатеричное число.If value is the string representation of a hexadecimal number, it cannot be preceded by any decoration (such as 0x or &h) that differentiates it as a hexadecimal number. Это приводит к сбою преобразования.This causes the conversion to fail.

Если value является шестнадцатеричной строкой, Parse(String, NumberStyles) метод интерпретирует value как отрицательное число, хранящееся в двух представлениях дополнения, если первые две шестнадцатеричные цифры больше или равны 0x80 .If value is a hexadecimal string, the Parse(String, NumberStyles) method interprets value as a negative number stored by using two's complement representation if its first two hexadecimal digits are greater than or equal to 0x80. Иными словами, метод интерпретирует бит наивысшего порядка первого байта в value качестве бита знака.In other words, the method interprets the highest-order bit of the first byte in value as the sign bit. Чтобы убедиться, что шестнадцатеричная строка правильно интерпретируется как положительное число, первая цифра в value должна иметь нулевое значение.To make sure that a hexadecimal string is correctly interpreted as a positive number, the first digit in value must have a value of zero. Например, метод интерпретирует 0x80 как отрицательное значение, но интерпретирует либо 0x080 или 0x0080 как положительное значение.For example, the method interprets 0x80 as a negative value, but it interprets either 0x080 or 0x0080 as a positive value. В следующем примере показано различие между шестнадцатеричными строками, представляющими отрицательные и положительные значения.The following example illustrates the difference between hexadecimal strings that represent negative and positive values.

using System;
using System.Globalization;
using System.Numerics;

public class Example
{
   public static void Main()
   {
      string[] hexStrings = { "80", "E293", "F9A2FF", "FFFFFFFF",
                              "080", "0E293", "0F9A2FF", "0FFFFFFFF",
                              "0080", "00E293", "00F9A2FF", "00FFFFFFFF" };
      foreach (string hexString in hexStrings)
      {
         BigInteger number = BigInteger.Parse(hexString, NumberStyles.AllowHexSpecifier);
         Console.WriteLine("Converted 0x{0} to {1}.", hexString, number);
      }
   }
}
// The example displays the following output:
//       Converted 0x80 to -128.
//       Converted 0xE293 to -7533.
//       Converted 0xF9A2FF to -417025.
//       Converted 0xFFFFFFFF to -1.
//       Converted 0x080 to 128.
//       Converted 0x0E293 to 58003.
//       Converted 0x0F9A2FF to 16360191.
//       Converted 0x0FFFFFFFF to 4294967295.
//       Converted 0x0080 to 128.
//       Converted 0x00E293 to 58003.
//       Converted 0x00F9A2FF to 16360191.
//       Converted 0x00FFFFFFFF to 4294967295.
Imports System.Globalization
Imports System.Numerics

Module Example
   Public Sub Main()
      Dim hexStrings() As String = { "80", "E293", "F9A2FF", "FFFFFFFF", 
                                     "080", "0E293", "0F9A2FF", "0FFFFFFFF",  
                                     "0080", "00E293", "00F9A2FF", "00FFFFFFFF" }
      For Each hexString As String In hexStrings
         Dim number As BigInteger = BigInteger.Parse(hexString, NumberStyles.AllowHexSpecifier)
         Console.WriteLine("Converted 0x{0} to {1}.", hexString, number)
      Next         
   End Sub
End Module
' The example displays the following output:
'       Converted 0x80 to -128.
'       Converted 0xE293 to -7533.
'       Converted 0xF9A2FF to -417025.
'       Converted 0xFFFFFFFF to -1.
'       Converted 0x080 to 128.
'       Converted 0x0E293 to 58003.
'       Converted 0x0F9A2FF to 16360191.
'       Converted 0x0FFFFFFFF to 4294967295.
'       Converted 0x0080 to 128.
'       Converted 0x00E293 to 58003.
'       Converted 0x00F9A2FF to 16360191.
'       Converted 0x00FFFFFFFF to 4294967295.

valueПараметр анализируется с помощью сведений о форматировании в NumberFormatInfo объекте, инициализированном для текущего языка и региональных параметров системы.The value parameter is parsed by using the formatting information in a NumberFormatInfo object that is initialized for the current system culture. Чтобы указать язык и региональные параметры, сведения о форматировании которых используются для операции синтаксического анализа, вызовите Parse(String, NumberStyles, IFormatProvider) перегрузку.To specify the culture whose formatting information is used for the parse operation, call the Parse(String, NumberStyles, IFormatProvider) overload.

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

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