Int32.Parse Метод

Определение

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

Перегрузки

Parse(String, NumberStyles, IFormatProvider)

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

Parse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider)

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

Parse(String, NumberStyles)

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

Parse(String)

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

Parse(String, IFormatProvider)

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

Parse(String, NumberStyles, IFormatProvider)

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

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

Параметры

s
String

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

style
NumberStyles

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

provider
IFormatProvider

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

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

Int32

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

Исключения

s имеет значение null.

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

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

s не представлен в формате, совместимом с style.

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

-или- s содержит ненулевые дробные разряды.

Примеры

В следующем примере используются различные style provider Параметры и для анализа строковых представлений Int32 значений. В нем также показаны различные способы интерпретации одной и той же строки в зависимости от языка и региональных параметров, сведения о форматировании которых используются для операции синтаксического анализа.

using namespace System;
using namespace System::Globalization;

public ref class ParseInt32
{
public:
   static void Main()
   {
      Convert("12,000", NumberStyles::Float | NumberStyles::AllowThousands, 
              gcnew CultureInfo("en-GB"));
      Convert("12,000", NumberStyles::Float | NumberStyles::AllowThousands,
              gcnew CultureInfo("fr-FR"));
      Convert("12,000", NumberStyles::Float, gcnew CultureInfo("en-US"));

      Convert("12 425,00", NumberStyles::Float | NumberStyles::AllowThousands,
              gcnew CultureInfo("sv-SE"));
      Convert("12,425.00", NumberStyles::Float | NumberStyles::AllowThousands,
              NumberFormatInfo::InvariantInfo);
      Convert("631,900", NumberStyles::Integer | NumberStyles::AllowDecimalPoint, 
              gcnew CultureInfo("fr-FR"));
      Convert("631,900", NumberStyles::Integer | NumberStyles::AllowDecimalPoint,
              gcnew CultureInfo("en-US"));
      Convert("631,900", NumberStyles::Integer | NumberStyles::AllowThousands,
              gcnew CultureInfo("en-US"));
   }

private:
   static void Convert(String^ value, NumberStyles style,
                               IFormatProvider^ provider)
   {
      try
      {
         int number = Int32::Parse(value, style, provider);
         Console::WriteLine("Converted '{0}' to {1}.", value, number);
      }
      catch (FormatException^)
      {
         Console::WriteLine("Unable to convert '{0}'.", value);
      }
      catch (OverflowException^)
      {
         Console::WriteLine("'{0}' is out of range of the Int32 type.", value);   
      }
   }                               
};

int main()
{
    ParseInt32::Main();
}
// This example displays the following output to the console:
//       Converted '12,000' to 12000.
//       Converted '12,000' to 12.
//       Unable to convert '12,000'.
//       Converted '12 425,00' to 12425.
//       Converted '12,425.00' to 12425.
//       '631,900' is out of range of the Int32 type.
//       Unable to convert '631,900'.
//       Converted '631,900' to 631900.
using System;
using System.Globalization;

public class ParseInt32
{
   public static void Main()
   {
      Convert("12,000", NumberStyles.Float | NumberStyles.AllowThousands,
              new CultureInfo("en-GB"));
      Convert("12,000", NumberStyles.Float | NumberStyles.AllowThousands,
              new CultureInfo("fr-FR"));
      Convert("12,000", NumberStyles.Float, new CultureInfo("en-US"));

      Convert("12 425,00", NumberStyles.Float | NumberStyles.AllowThousands,
              new CultureInfo("sv-SE"));
      Convert("12,425.00", NumberStyles.Float | NumberStyles.AllowThousands,
              NumberFormatInfo.InvariantInfo);
      Convert("631,900", NumberStyles.Integer | NumberStyles.AllowDecimalPoint,
              new CultureInfo("fr-FR"));
      Convert("631,900", NumberStyles.Integer | NumberStyles.AllowDecimalPoint,
              new CultureInfo("en-US"));
      Convert("631,900", NumberStyles.Integer | NumberStyles.AllowThousands,
              new CultureInfo("en-US"));
   }

   private static void Convert(string value, NumberStyles style,
                               IFormatProvider provider)
   {
      try
      {
         int number = Int32.Parse(value, style, provider);
         Console.WriteLine("Converted '{0}' to {1}.", value, number);
      }
      catch (FormatException)
      {
         Console.WriteLine("Unable to convert '{0}'.", value);
      }
      catch (OverflowException)
      {
         Console.WriteLine("'{0}' is out of range of the Int32 type.", value);
      }
   }
}
// This example displays the following output to the console:
//       Converted '12,000' to 12000.
//       Converted '12,000' to 12.
//       Unable to convert '12,000'.
//       Converted '12 425,00' to 12425.
//       Converted '12,425.00' to 12425.
//       '631,900' is out of range of the Int32 type.
//       Unable to convert '631,900'.
//       Converted '631,900' to 631900.
Imports System.Globalization

Module ParseInt32
   Public Sub Main()
      Convert("12,000", NumberStyles.Float Or NumberStyles.AllowThousands, _
              New CultureInfo("en-GB"))      
      Convert("12,000", NumberStyles.Float Or NumberStyles.AllowThousands, _
              New CultureInfo("fr-FR"))
      Convert("12,000", NumberStyles.Float, New CultureInfo("en-US"))
      
      Convert("12 425,00", NumberStyles.Float Or NumberStyles.AllowThousands, _
              New CultureInfo("sv-SE")) 
      Convert("12,425.00", NumberStyles.Float Or NumberStyles.AllowThousands, _
              NumberFormatInfo.InvariantInfo) 
      Convert("631,900", NumberStyles.Integer Or NumberStyles.AllowDecimalPoint, _ 
              New CultureInfo("fr-FR"))
      Convert("631,900", NumberStyles.Integer Or NumberStyles.AllowDecimalPoint, _
              New CultureInfo("en-US"))
      Convert("631,900", NumberStyles.Integer Or NumberStyles.AllowThousands, _
              New CultureInfo("en-US"))
   End Sub

   Private Sub Convert(value As String, style As NumberStyles, _
                       provider As IFormatProvider)
      Try
         Dim number As Integer = Int32.Parse(value, style, provider)
         Console.WriteLine("Converted '{0}' to {1}.", value, number)
      Catch e As FormatException
         Console.WriteLine("Unable to convert '{0}'.", value)
      Catch e As OverflowException
         Console.WriteLine("'{0}' is out of range of the Int32 type.", value)   
      End Try
   End Sub                       
End Module
' This example displays the following output to the console:
'       Converted '12,000' to 12000.
'       Converted '12,000' to 12.
'       Unable to convert '12,000'.
'       Converted '12 425,00' to 12425.
'       Converted '12,425.00' to 12425.
'       '631,900' is out of range of the Int32 type.
'       Unable to convert '631,900'.
'       Converted '631,900' to 631900.

Комментарии

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

Протокол [$] писать [цифры,] цифры [.fractional_digist] [e [sign] exponential_digits] [ws]

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

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

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

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

fractional_digits

exponential_digits
Последовательность цифр от 0 до 9. Для fractional_digits допустима только цифра 0.
, Символ разделителя тысяч, зависящий от языка и региональных параметров. Разделитель тысяч языка и региональных параметров, заданный параметром, provider может использоваться в, s Если style включает NumberStyles.AllowThousands флаг.
. Символ десятичной запятой, зависящий от языка и региональных параметров. Символ десятичной запятой, заданный параметром, provider может присутствовать в параметре, s Если style включает NumberStyles.AllowDecimalPoint флаг.

Только цифра 0 может присутствовать в виде дробной части для выполнения операции синтаксического анализа. Если fractional_digits включает любую другую цифру, OverflowException создается исключение.
e Символ "e" или "E", указывающий, что значение представлено в экспоненциальной нотации. sПараметр может представлять число в экспоненциальной нотации style , если включает NumberStyles.AllowExponent флаг.
хексдигитс Последовательность шестнадцатеричных цифр от 0 до f или от 0 до F.

Примечание

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

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

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

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

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

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

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

Parse(ReadOnlySpan<Char>, NumberStyles, IFormatProvider)

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

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

Параметры

s
ReadOnlySpan<Char>

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

style
NumberStyles

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

provider
IFormatProvider

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

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

Int32

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

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

Parse(String, NumberStyles)

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

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

Параметры

s
String

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

style
NumberStyles

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

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

Int32

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

Исключения

s имеет значение null.

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

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

s не представлен в формате, совместимом с style.

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

-или- s содержит ненулевые дробные разряды.

Примеры

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

using namespace System;
using namespace System::Globalization;

public ref class ParseInt32
{
public:
   static void Main()
   {
      Convert("104.0", NumberStyles::AllowDecimalPoint);
      Convert("104.9", NumberStyles::AllowDecimalPoint);
      Convert(" $17,198,064.42", NumberStyles::AllowCurrencySymbol |
                                 NumberStyles::Number);
      Convert("103E06", NumberStyles::AllowExponent);
      Convert("-1,345,791", NumberStyles::AllowThousands);
      Convert("(1,345,791)", NumberStyles::AllowThousands |
                             NumberStyles::AllowParentheses);
   }

private:
   static void Convert(String^ value, NumberStyles style)
   {
      try
      {
         int number = Int32::Parse(value, style);
         Console::WriteLine("Converted '{0}' to {1}.", value, number);
      }
      catch (FormatException^)
      {
         Console::WriteLine("Unable to convert '{0}'.", value);
      }
      catch (OverflowException^)
      {
         Console::WriteLine("'{0}' is out of range of the Int32 type.", value);
      }
   }
};

int main()
{
    ParseInt32::Main();
}
// The example displays the following output to the console:
//       Converted '104.0' to 104.
//       '104.9' is out of range of the Int32 type.
//       ' $17,198,064.42' is out of range of the Int32 type.
//       Converted '103E06' to 103000000.
//       Unable to convert '-1,345,791'.
//       Converted '(1,345,791)' to -1345791.
using System;
using System.Globalization;

public class ParseInt32
{
   public static void Main()
   {
      Convert("104.0", NumberStyles.AllowDecimalPoint);
      Convert("104.9", NumberStyles.AllowDecimalPoint);
      Convert(" $17,198,064.42", NumberStyles.AllowCurrencySymbol |
                                 NumberStyles.Number);
      Convert("103E06", NumberStyles.AllowExponent);
      Convert("-1,345,791", NumberStyles.AllowThousands);
      Convert("(1,345,791)", NumberStyles.AllowThousands |
                             NumberStyles.AllowParentheses);
   }

   private static void Convert(string value, NumberStyles style)
   {
      try
      {
         int number = Int32.Parse(value, style);
         Console.WriteLine("Converted '{0}' to {1}.", value, number);
      }
      catch (FormatException)
      {
         Console.WriteLine("Unable to convert '{0}'.", value);
      }
      catch (OverflowException)
      {
         Console.WriteLine("'{0}' is out of range of the Int32 type.", value);
      }
   }
}
// The example displays the following output to the console:
//       Converted '104.0' to 104.
//       '104.9' is out of range of the Int32 type.
//       ' $17,198,064.42' is out of range of the Int32 type.
//       Converted '103E06' to 103000000.
//       Unable to convert '-1,345,791'.
//       Converted '(1,345,791)' to -1345791.
Imports System.Globalization

Module ParseInt32
   Public Sub Main()
      Convert("104.0", NumberStyles.AllowDecimalPoint)    
      Convert("104.9", NumberStyles.AllowDecimalPoint)
      Convert(" $17,198,064.42", NumberStyles.AllowCurrencySymbol Or _
                                 NumberStyles.Number)
      Convert("103E06", NumberStyles.AllowExponent)  
      Convert("-1,345,791", NumberStyles.AllowThousands)
      Convert("(1,345,791)", NumberStyles.AllowThousands Or _
                             NumberStyles.AllowParentheses)
   End Sub
   
   Private Sub Convert(value As String, style As NumberStyles)
      Try
         Dim number As Integer = Int32.Parse(value, style)
         Console.WriteLine("Converted '{0}' to {1}.", value, number)
      Catch e As FormatException
         Console.WriteLine("Unable to convert '{0}'.", value)
      Catch e As OverflowException
         Console.WriteLine("'{0}' is out of range of the Int32 type.", value)   
      End Try
   End Sub
End Module
' The example displays the following output to the console:
'       Converted '104.0' to 104.
'       '104.9' is out of range of the Int32 type.
'       ' $17,198,064.42' is out of range of the Int32 type.
'       Converted '103E06' to 103000000.
'       Unable to convert '-1,345,791'.
'       Converted '(1,345,791)' to -1345791.

Комментарии

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

Протокол [$] писать [цифры,] цифры [.fractional_digits] [e [sign] exponential_digits] [ws]

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

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

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

Элемент Описание
ws Необязательный пробел. Пробел может присутствовать в начале s style , если включает NumberStyles.AllowLeadingWhite флаг, и может находиться в конце, s Если style включает NumberStyles.AllowTrailingWhite флаг.
$ Символ валюты, зависящий от языка и региональных параметров. Его расположение в строке определяется NumberFormatInfo.CurrencyNegativePattern NumberFormatInfo.CurrencyPositivePattern свойствами и текущего языка и региональных параметров. Символ валюты текущего языка и региональных параметров может отображаться в, s Если style включает NumberStyles.AllowCurrencySymbol флаг.
sign Необязательный знак. Знак может присутствовать в начале s style , если включает NumberStyles.AllowLeadingSign флаг, и может находиться в конце, s Если style включает NumberStyles.AllowTrailingSign флаг. Круглые скобки могут использоваться в s , чтобы указать отрицательное значение, если style включает NumberStyles.AllowParentheses флаг.
digits

fractional_digits

exponential_digits
Последовательность цифр от 0 до 9. Для fractional_digits допустима только цифра 0.
, Символ разделителя тысяч, зависящий от языка и региональных параметров. Разделитель тысяч текущего языка и региональных параметров может отображаться в, s Если style включает NumberStyles.AllowThousands флаг.
. Символ десятичной запятой, зависящий от языка и региональных параметров. Символ десятичной запятой текущего языка и региональных параметров может присутствовать в, s Если style включает NumberStyles.AllowDecimalPoint флаг. Только цифра 0 может присутствовать в виде дробной части для выполнения операции синтаксического анализа. Если fractional_digits включает любую другую цифру, OverflowException создается исключение.
e Символ "e" или "E", указывающий, что значение представлено в экспоненциальной нотации. sПараметр может представлять число в экспоненциальной нотации style , если включает NumberStyles.AllowExponent флаг.
хексдигитс Последовательность шестнадцатеричных цифр от 0 до f или от 0 до F.

Примечание

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

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

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

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

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

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

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

Parse(String)

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

public:
 static int Parse(System::String ^ s);
public static int Parse (string s);
static member Parse : string -> int
Public Shared Function Parse (s As String) As Integer

Параметры

s
String

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

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

Int32

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

Исключения

s имеет значение null.

s имеет неправильный формат.

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

Примеры

В следующем примере показано, как преобразовать строковое значение в значение 32-разрядного целого числа со знаком с помощью Int32.Parse(String) метода. Полученное целочисленное значение затем отображается в консоли.

using namespace System;

void main()
{
   array<String^>^ values = { "+13230", "-0", "1,390,146", "$190,235,421,127",
                              "0xFA1B", "163042", "-10", "007", "2147483647", 
                              "2147483648", "16e07", "134985.0", "-12034",
                              "-2147483648", "-2147483649" };
   for each (String^ value in values)
   {
      try {
         Int32 number = Int32::Parse(value); 
         Console::WriteLine("{0} --> {1}", value, number);
      }
      catch (FormatException^ e) {
         Console::WriteLine("{0}: Bad Format", value);
      }   
      catch (OverflowException^ e) {
         Console::WriteLine("{0}: Overflow", value);   
      }  
   }
}
// The example displays the following output:
//       +13230 --> 13230
//       -0 --> 0
//       1,390,146: Bad Format
//       $190,235,421,127: Bad Format
//       0xFA1B: Bad Format
//       163042 --> 163042
//       -10 --> -10
//       007 --> 7
//       2147483647 --> 2147483647
//       2147483648: Overflow
//       16e07: Bad Format
//       134985.0: Bad Format
//       -12034 --> -12034
//       -2147483648 --> -2147483648
//       -2147483649: Overflow
using System;

public class Example
{
   public static void Main()
   {
      string[] values = { "+13230", "-0", "1,390,146", "$190,235,421,127",
                          "0xFA1B", "163042", "-10", "007", "2147483647",
                          "2147483648", "16e07", "134985.0", "-12034",
                          "-2147483648", "-2147483649" };
      foreach (string value in values)
      {
         try {
            int number = Int32.Parse(value);
            Console.WriteLine("{0} --> {1}", value, number);
         }
         catch (FormatException) {
            Console.WriteLine("{0}: Bad Format", value);
         }
         catch (OverflowException) {
            Console.WriteLine("{0}: Overflow", value);
         }
      }
   }
}
// The example displays the following output:
//       +13230 --> 13230
//       -0 --> 0
//       1,390,146: Bad Format
//       $190,235,421,127: Bad Format
//       0xFA1B: Bad Format
//       163042 --> 163042
//       -10 --> -10
//       007 --> 7
//       2147483647 --> 2147483647
//       2147483648: Overflow
//       16e07: Bad Format
//       134985.0: Bad Format
//       -12034 --> -12034
//       -2147483648 --> -2147483648
//       -2147483649: Overflow
Module Example
   Public Sub Main()
      Dim values() As String = { "+13230", "-0", "1,390,146", "$190,235,421,127",
                                 "0xFA1B", "163042", "-10", "007", "2147483647", 
                                 "2147483648", "16e07", "134985.0", "-12034",
                                 "-2147483648", "-2147483649"  }
      For Each value As String In values
         Try
            Dim number As Integer = Int32.Parse(value) 
            Console.WriteLine("{0} --> {1}", value, number)
         Catch e As FormatException
            Console.WriteLine("{0}: Bad Format", value)
         Catch e As OverflowException
            Console.WriteLine("{0}: Overflow", value)   
         End Try  
      Next
   End Sub
End Module
' The example displays the following output:
'       +13230 --> 13230
'       -0 --> 0
'       1,390,146: Bad Format
'       $190,235,421,127: Bad Format
'       0xFA1B: Bad Format
'       163042 --> 163042
'       -10 --> -10
'       007 --> 7
'       2147483647 --> 2147483647
'       2147483648: Overflow
'       16e07: Bad Format
'       134985.0: Bad Format
'       -12034 --> -12034
'       -2147483648 --> -2147483648
'       -2147483649: Overflow

Комментарии

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

Протокол [знак] цифры [ws]

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

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

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

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

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

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

Parse(String, IFormatProvider)

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

public:
 static int Parse(System::String ^ s, IFormatProvider ^ provider);
public static int Parse (string s, IFormatProvider provider);
public static int Parse (string s, IFormatProvider? provider);
static member Parse : string * IFormatProvider -> int
Public Shared Function Parse (s As String, provider As IFormatProvider) As Integer

Параметры

s
String

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

provider
IFormatProvider

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

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

Int32

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

Исключения

s имеет значение null.

Формат параметра s неправильный.

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

Примеры

В следующем примере показан обработчик событий нажатия кнопки в веб-форме. Он использует массив, возвращаемый HttpRequest.UserLanguages свойством, чтобы определить языковой стандарт пользователя. Затем создается экземпляр CultureInfo объекта, соответствующий этому языковому стандарту. NumberFormatInfoЗатем объект, принадлежащий этому CultureInfo объекту, передается Parse(String, IFormatProvider) методу для преобразования входных данных пользователя в Int32 значение.

protected void OkToInteger_Click(object sender, EventArgs e)
{
   string locale;
   int number;
   CultureInfo culture;

   // Return if string is empty
   if (String.IsNullOrEmpty(this.inputNumber.Text))
      return;

   // Get locale of web request to determine possible format of number
   if (Request.UserLanguages.Length == 0)
      return;
   locale = Request.UserLanguages[0];
   if (String.IsNullOrEmpty(locale))
      return;

  // Instantiate CultureInfo object for the user's locale
   culture = new CultureInfo(locale);

   // Convert user input from a string to a number
   try
   {
      number = Int32.Parse(this.inputNumber.Text, culture.NumberFormat);
   }
   catch (FormatException)
   {
      return;
   }
   catch (Exception)
   {
      return;
   }
   // Output number to label on web form
   this.outputNumber.Text = "Number is " + number.ToString();
}
Protected Sub OkToInteger_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles OkToInteger.Click
   Dim locale As String
   Dim culture As CultureInfo
   Dim number As Integer

   ' Return if string is empty
   If String.IsNullOrEmpty(Me.inputNumber.Text) Then Exit Sub

   ' Get locale of web request to determine possible format of number
   If Request.UserLanguages.Length = 0 Then Exit Sub
   locale = Request.UserLanguages(0)
   If String.IsNullOrEmpty(locale) Then Exit Sub

   ' Instantiate CultureInfo object for the user's locale
   culture = New CultureInfo(locale)

   ' Convert user input from a string to a number
   Try
      number = Int32.Parse(Me.inputNumber.Text, culture.NumberFormat)
   Catch ex As FormatException
      Exit Sub
   Catch ex As Exception
      Exit Sub
   End Try

   ' Output number to label on web form
   Me.outputNumber.Text = "Number is " & number.ToString()
End Sub

Комментарии

Эта перегрузка Parse(String, IFormatProvider) метода обычно используется для преобразования текста, который может быть отформатирован различными способами, в Int32 значение. Например, можно использовать для преобразования текста, вводимых пользователем, в текстовое поле HTML в числовое значение.

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

Протокол [знак] цифры [ws]

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

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

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

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

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

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