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


Int64.TryParse Метод

Определение

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

Перегрузки

Имя Описание
TryParse(String, IFormatProvider, Int64)

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

TryParse(ReadOnlySpan<Char>, Int64)

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

TryParse(String, Int64)

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

TryParse(ReadOnlySpan<Byte>, IFormatProvider, Int64)

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

TryParse(ReadOnlySpan<Char>, IFormatProvider, Int64)

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

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

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

TryParse(ReadOnlySpan<Byte>, Int64)

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

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

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

TryParse(String, NumberStyles, IFormatProvider, Int64)

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

TryParse(String, IFormatProvider, Int64)

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

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

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

Параметры

s
String

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

provider
IFormatProvider

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

result
Int64

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

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

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

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

TryParse(ReadOnlySpan<Char>, Int64)

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

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

public:
 static bool TryParse(ReadOnlySpan<char> s, [Runtime::InteropServices::Out] long % result);
public static bool TryParse(ReadOnlySpan<char> s, out long result);
static member TryParse : ReadOnlySpan<char> * int64 -> bool
Public Shared Function TryParse (s As ReadOnlySpan(Of Char), ByRef result As Long) As Boolean

Параметры

s
ReadOnlySpan<Char>

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

result
Int64

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

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

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

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

TryParse(String, Int64)

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

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

public:
 static bool TryParse(System::String ^ s, [Runtime::InteropServices::Out] long % result);
public static bool TryParse(string s, out long result);
public static bool TryParse(string? s, out long result);
static member TryParse : string * int64 -> bool
Public Shared Function TryParse (s As String, ByRef result As Long) As Boolean

Параметры

s
String

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

result
Int64

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

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

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

Примеры

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

using System;

public class StringParsing
{
   public static void Main()
   {
      TryToParse(null);
      TryToParse("160519");
      TryToParse("9432.0");
      TryToParse("16,667");
      TryToParse("   -322   ");
      TryToParse("+4302");
      TryToParse("(100);");
      TryToParse("01FA");
   }

   private static void TryToParse(string value)
   {
      bool success = Int64.TryParse(value, out long number);
      if (success)
      {
         Console.WriteLine("Converted '{0}' to {1}.", value, number);
      }
      else
      {
         if (value == null) value = "";
         Console.WriteLine("Attempted conversion of '{0}' failed.", value);
      }
   }
}
// The example displays the following output to the console:
//       Attempted conversion of '' failed.
//       Converted '160519' to 160519.
//       Attempted conversion of '9432.0' failed.
//       Attempted conversion of '16,667' failed.
//       Converted '   -322   ' to -322.
//       Converted '+4302' to 4302.
//       Attempted conversion of '(100);' failed.
//       Attempted conversion of '01FA' failed.
open System

let tryToParse (value: string) =
    match Int64.TryParse value with
    | true, number ->
        printfn $"Converted '{value}' to {number}."
    | _ ->
        let value =
            if isNull value then 
                ""
            else
                value
        printfn $"Attempted conversion of '{value}' failed."

tryToParse null
tryToParse "160519"
tryToParse "9432.0"
tryToParse "16,667"
tryToParse "   -322   "
tryToParse "+4302"
tryToParse "(100);"
tryToParse "01FA"


// The example displays the following output to the console:
//       Attempted conversion of '' failed.
//       Converted '160519' to 160519.
//       Attempted conversion of '9432.0' failed.
//       Attempted conversion of '16,667' failed.
//       Converted '   -322   ' to -322.
//       Converted '+4302' to 4302.
//       Attempted conversion of '(100);' failed.
//       Attempted conversion of '01FA' failed.
Module StringParsing
   Public Sub Main()
      TryToParse(Nothing)
      TryToParse("160519")
      TryToParse("9432.0")
      TryToParse("16,667")
      TryToParse("   -322   ")
      TryToParse("+4302")
      TryToParse("(100)")
      TryToParse("01FA")
   End Sub
   
   Private Sub TryToParse(value As String)
      Dim number As Long
      Dim result As Boolean = Int64.TryParse(value, number)
      If result Then
         Console.WriteLine("Converted '{0}' to {1}.", value, number)
      Else
         If value Is Nothing Then value = "" 
         Console.WriteLine("Attempted conversion of '{0}' failed.", value)
      End If     
   End Sub
End Module
' The example displays the following output to the console:
'       Attempted conversion of '' failed.
'       Converted '160519' to 160519.
'       Attempted conversion of '9432.0' failed.
'       Attempted conversion of '16,667' failed.
'       Converted '   -322   ' to -322.
'       Converted '+4302' to 4302.
'       Attempted conversion of '(100)' failed.
'       Attempted conversion of '01FA' failed.

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

  • "9432.0". Преобразование завершается ошибкой, так как строка не может содержать десятичный разделитель; он должен содержать только целочисленные цифры.

  • "16,667". Преобразование завершается ошибкой, так как строка не может содержать разделители групп; он должен содержать только целочисленные цифры.

  • "(100)". Преобразование завершается ошибкой, так как строка не может содержать отрицательный знак, отличный от знака, определенного текущим языком и свойствами языка и NumberFormatInfo.NumberNegativePattern региональных NumberFormatInfo.NegativeSign параметров.

  • "01FA". Преобразование завершается ошибкой, так как строка не может содержать шестнадцатеричные цифры; Он должен содержать только десятичные цифры.

Комментарии

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

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

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

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

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

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

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

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

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

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

TryParse(ReadOnlySpan<Byte>, IFormatProvider, Int64)

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

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

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

Параметры

utf8Text
ReadOnlySpan<Byte>

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

provider
IFormatProvider

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

result
Int64

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

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

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

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

TryParse(ReadOnlySpan<Char>, IFormatProvider, Int64)

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

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

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

Параметры

s
ReadOnlySpan<Char>

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

provider
IFormatProvider

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

result
Int64

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

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

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

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

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

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

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

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

Параметры

utf8Text
ReadOnlySpan<Byte>

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

style
NumberStyles

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

provider
IFormatProvider

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

result
Int64

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

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

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

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

TryParse(ReadOnlySpan<Byte>, Int64)

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

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

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

Параметры

utf8Text
ReadOnlySpan<Byte>

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

result
Int64

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

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

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

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

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

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

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

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

Параметры

s
ReadOnlySpan<Char>

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

style
NumberStyles

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

provider
IFormatProvider

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

result
Int64

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

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

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

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

TryParse(String, NumberStyles, IFormatProvider, Int64)

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

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

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

Параметры

s
String

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

style
NumberStyles

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

provider
IFormatProvider

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

result
Int64

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

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

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

Исключения

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

-или-

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

Примеры

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

using System;
using System.Globalization;

public class StringParsing
{
   public static void Main()
   {
      string numericString;
      NumberStyles styles;

      numericString = "106779";
      styles = NumberStyles.Integer;
      CallTryParse(numericString, styles);

      numericString = "-30677";
      styles = NumberStyles.None;
      CallTryParse(numericString, styles);

      styles = NumberStyles.AllowLeadingSign;
      CallTryParse(numericString, styles);

      numericString = "301677-";
      CallTryParse(numericString, styles);

      styles = styles | NumberStyles.AllowTrailingSign;
      CallTryParse(numericString, styles);

      numericString = "$10634";
      styles = NumberStyles.Integer;
      CallTryParse(numericString, styles);

      styles = NumberStyles.Integer | NumberStyles.AllowCurrencySymbol;
      CallTryParse(numericString, styles);

      numericString = "10345.00";
      styles = NumberStyles.Integer | NumberStyles.AllowDecimalPoint;
      CallTryParse(numericString, styles);

      numericString = "10345.72";
      styles = NumberStyles.Integer | NumberStyles.AllowDecimalPoint;
      CallTryParse(numericString, styles);

      numericString = "22,593";
      styles = NumberStyles.Integer | NumberStyles.AllowThousands;
      CallTryParse(numericString, styles);

      numericString = "12E-01";
      styles = NumberStyles.Integer | NumberStyles.AllowExponent;
      CallTryParse(numericString, styles);

      numericString = "12E03";
      CallTryParse(numericString, styles);

      numericString = "80c1";
      CallTryParse(numericString, NumberStyles.HexNumber);

      numericString = "0x80C1";
      CallTryParse(numericString, NumberStyles.HexNumber);
   }

   private static void CallTryParse(string stringToConvert, NumberStyles styles)
   {
      CultureInfo provider;

      // If currency symbol is allowed, use en-US culture.
      if ((styles & NumberStyles.AllowCurrencySymbol) > 0)
         provider = new CultureInfo("en-US");
      else
         provider = CultureInfo.InvariantCulture;

      bool success = Int64.TryParse(stringToConvert, styles,
                                   provider, out long number);
      if (success)
         Console.WriteLine($"Converted '{stringToConvert}' to {number}.");
      else
         Console.WriteLine($"Attempted conversion of '{stringToConvert}' failed.");
   }
}
// The example displays the following output to the console:
//       Converted '106779' to 106779.
//       Attempted conversion of '-30677' failed.
//       Converted '-30677' to -30677.
//       Attempted conversion of '301677-' failed.
//       Converted '301677-' to -301677.
//       Attempted conversion of '$10634' failed.
//       Converted '$10634' to 10634.
//       Converted '10345.00' to 10345.
//       Attempted conversion of '10345.72' failed.
//       Converted '22,593' to 22593.
//       Attempted conversion of '12E-01' failed.
//       Converted '12E03' to 12000.
//       Converted '80c1' to 32961.
//       Attempted conversion of '0x80C1' failed.
open System
open System.Globalization

let callTryParse (stringToConvert: string) styles =
    let provider =
        // If currency symbol is allowed, use en-US culture.
        if int (styles &&& NumberStyles.AllowCurrencySymbol) > 0 then
            CultureInfo "en-US"
        else
            CultureInfo.InvariantCulture

    match Int64.TryParse(stringToConvert, styles, provider) with
    | true, number ->
        printfn $"Converted '{stringToConvert}' to {number}."
    | _ ->
        printfn $"Attempted conversion of '{stringToConvert}' failed."


[<EntryPoint>]
let main _ =
    let numericString = "106779"
    let styles = NumberStyles.Integer
    callTryParse numericString styles

    let numericString = "-30677"
    let styles = NumberStyles.None
    callTryParse numericString styles

    let styles = NumberStyles.AllowLeadingSign
    callTryParse numericString styles

    let numericString = "301677-"
    callTryParse numericString styles

    let styles = styles ||| NumberStyles.AllowTrailingSign
    callTryParse numericString styles

    let numericString = "$10634"
    let styles = NumberStyles.Integer
    callTryParse numericString styles

    let styles = NumberStyles.Integer ||| NumberStyles.AllowCurrencySymbol
    callTryParse numericString styles

    let numericString = "10345.00"
    let styles = NumberStyles.Integer ||| NumberStyles.AllowDecimalPoint
    callTryParse numericString styles

    let numericString = "10345.72"
    let styles = NumberStyles.Integer ||| NumberStyles.AllowDecimalPoint
    callTryParse numericString styles

    let numericString = "22,593"
    let styles = NumberStyles.Integer ||| NumberStyles.AllowThousands
    callTryParse numericString styles

    let numericString = "12E-01"
    let styles = NumberStyles.Integer ||| NumberStyles.AllowExponent
    callTryParse numericString styles

    let numericString = "12E03"
    callTryParse numericString styles

    let numericString = "80c1"
    callTryParse numericString NumberStyles.HexNumber

    let numericString = "0x80C1"
    callTryParse numericString NumberStyles.HexNumber

    0

// The example displays the following output to the console:
//       Converted '106779' to 106779.
//       Attempted conversion of '-30677' failed.
//       Converted '-30677' to -30677.
//       Attempted conversion of '301677-' failed.
//       Converted '301677-' to -301677.
//       Attempted conversion of '$10634' failed.
//       Converted '$10634' to 10634.
//       Converted '10345.00' to 10345.
//       Attempted conversion of '10345.72' failed.
//       Converted '22,593' to 22593.
//       Attempted conversion of '12E-01' failed.
//       Converted '12E03' to 12000.
//       Converted '80c1' to 32961.
//       Attempted conversion of '0x80C1' failed.
Imports System.Globalization

Module StringParsing
   Public Sub Main()
      Dim numericString As String
      Dim styles As NumberStyles
      
      numericString = "106779"
      styles = NumberStyles.Integer
      CallTryParse(numericString, styles)
      
      numericString = "-30677"
      styles = NumberStyles.None
      CallTryParse(numericString, styles)
      
      styles = NumberStyles.AllowLeadingSign
      CallTryParse(numericString, styles)
      
      numericString = "301677-"
      CallTryParse(numericString, styles)
      
      styles = styles Or NumberStyles.AllowTrailingSign
      CallTryParse(numericString, styles)
      
      numericString = "$10634"
      styles = NumberStyles.Integer
      CallTryParse(numericString, styles)
      
      styles = NumberStyles.Integer Or NumberStyles.AllowCurrencySymbol
      CallTryParse(numericString, styles)

      numericString = "10345.00"
      styles = NumberStyles.Integer Or NumberStyles.AllowDecimalPoint
      CallTryParse(numericString, styles)
      
      numericString = "10345.72"
      styles = NumberStyles.Integer Or NumberStyles.AllowDecimalPoint
      CallTryParse(numericString, styles)

      numericString = "22,593" 
      styles = NumberStyles.Integer Or NumberStyles.AllowThousands
      CallTryParse(numericString, styles)
      
      numericString = "12E-01"
      styles = NumberStyles.Integer Or NumberStyles.AllowExponent
      CallTryParse(numericString, styles) 
          
      numericString = "12E03"
      CallTryParse(numericString, styles) 
      
      numericString = "80c1"
      CallTryParse(numericString, NumberStyles.HexNumber)
      
      numericString = "0x80C1"
      CallTryParse(numericString, NumberStyles.HexNumber)
   End Sub
   
   Private Sub CallTryParse(stringToConvert As String, styles AS NumberStyles)
      Dim number As Long
      Dim provider As CultureInfo
      
      ' If currency symbol is allowed, use en-US culture.
      If CBool(styles And NumberStyles.AllowCurrencySymbol) Then
         provider = CultureInfo.CurrentCulture
      Else
         provider = New CultureInfo("en-US")
      End If
      
      Dim result As Boolean = Int64.TryParse(stringToConvert, styles, _
                                             provider, number)
      If result Then
         Console.WriteLine("Converted '{0}' to {1}.", stringToConvert, number)
      Else
         Console.WriteLine("Attempted conversion of '{0}' failed.", _
                           Convert.ToString(stringToConvert))
      End If                                                                           
   End Sub
End Module
' The example displays the following output to the console:
'       Converted '106779' to 106779.
'       Attempted conversion of '-30677' failed.
'       Converted '-30677' to -30677.
'       Attempted conversion of '301677-' failed.
'       Converted '301677-' to -301677.
'       Attempted conversion of '$10634' failed.
'       Converted '$10634' to 10634.
'       Converted '10345.00' to 10345.
'       Attempted conversion of '10345.72' failed.
'       Converted '22,593' to 22593.
'       Attempted conversion of '12E-01' failed.
'       Converted '12E03' to 12000.
'       Converted '80c1' to 32961.
'       Attempted conversion of '0x80C1' failed.

Комментарии

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

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

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

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

[ws]hexdigits[ws]

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

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

fractional_digits

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

Заметка

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

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

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

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

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

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

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