Ler em inglês

Compartilhar via


Int32.TryParse Método

Definição

Converte a representação de cadeia de caracteres de um número em seu equivalente inteiro com sinal de 32 bits. Um valor retornado indica se a operação foi bem-sucedida.

Sobrecargas

TryParse(String, IFormatProvider, Int32)

Tenta analisar uma cadeia de caracteres em um valor.

TryParse(ReadOnlySpan<Char>, Int32)

Converte a representação de intervalo de um número em um formato específico à cultura em seu equivalente inteiro com sinal de 32 bits. Um valor retornado indica se a conversão foi bem-sucedida.

TryParse(String, Int32)

Converte a representação de cadeia de caracteres de um número em seu equivalente inteiro com sinal de 32 bits. Um valor retornado indica se a conversão foi bem-sucedida.

TryParse(ReadOnlySpan<Byte>, IFormatProvider, Int32)

Tenta analisar um intervalo de caracteres UTF-8 em um valor.

TryParse(ReadOnlySpan<Char>, IFormatProvider, Int32)

Tenta analisar um intervalo de caracteres em um valor.

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

Tenta analisar um intervalo de caracteres UTF-8 em um valor.

TryParse(ReadOnlySpan<Byte>, Int32)

Tenta converter um intervalo de caracteres UTF-8 contendo a representação de cadeia de caracteres de um número em seu equivalente inteiro com sinal de 32 bits.

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

Converte a representação de intervalo de um número em um formato específico de estilo e cultura especificado em seu equivalente inteiro com sinal de 32 bits. Um valor retornado indica se a conversão foi bem-sucedida.

TryParse(String, NumberStyles, IFormatProvider, Int32)

Converte a representação de cadeia de caracteres de um número em um formato específico de cultura e estilo especificado em seu equivalente inteiro com sinal de 32 bits. Um valor retornado indica se a conversão foi bem-sucedida.

TryParse(String, IFormatProvider, Int32)

Origem:
Int32.cs
Origem:
Int32.cs
Origem:
Int32.cs

Tenta analisar uma cadeia de caracteres em um valor.

C#
public static bool TryParse(string? s, IFormatProvider? provider, out int result);

Parâmetros

s
String

A cadeia de caracteres a ser analisada.

provider
IFormatProvider

Um objeto que fornece informações de formatação específicas da cultura sobre s.

result
Int32

Quando esse método é retornado, contém o resultado da análise bem-sucedida de s ou de um valor indefinido sobre a falha.

Retornos

true se s foi analisado com êxito; caso contrário, false.

Aplica-se a

.NET 9 e outras versões
Produto Versões
.NET 7, 8, 9

TryParse(ReadOnlySpan<Char>, Int32)

Origem:
Int32.cs
Origem:
Int32.cs
Origem:
Int32.cs

Converte a representação de intervalo de um número em um formato específico à cultura em seu equivalente inteiro com sinal de 32 bits. Um valor retornado indica se a conversão foi bem-sucedida.

C#
public static bool TryParse(ReadOnlySpan<char> s, out int result);

Parâmetros

s
ReadOnlySpan<Char>

Um intervalo que contém os caracteres que representam o número a ser convertido.

result
Int32

Quando esse método é retornado, contém o valor inteiro com sinal de 32 bits equivalente do número contido em s, se a conversão foi bem-sucedida ou zero se a conversão falhou. A conversão falhará se o parâmetro s for null ou Empty ou representar um número menor que Int32.MinValue ou maior que Int32.MaxValue. Esse parâmetro é passado sem inicialização; qualquer valor originalmente fornecido em result será substituído.

Retornos

true se s foi convertido com êxito; caso contrário, false.

Aplica-se a

.NET 9 e outras versões
Produto Versões
.NET Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Standard 2.1

TryParse(String, Int32)

Origem:
Int32.cs
Origem:
Int32.cs
Origem:
Int32.cs

Converte a representação de cadeia de caracteres de um número em seu equivalente inteiro com sinal de 32 bits. Um valor retornado indica se a conversão foi bem-sucedida.

C#
public static bool TryParse(string s, out int result);
C#
public static bool TryParse(string? s, out int result);

Parâmetros

s
String

Uma cadeia de caracteres que contém um número a ser convertido.

result
Int32

Quando esse método é retornado, contém o valor inteiro com sinal de 32 bits equivalente do número contido em s, se a conversão foi bem-sucedida ou zero se a conversão falhou. A conversão falhará se o parâmetro s for null ou Empty, não for do formato correto ou representar um número menor que Int32.MinValue ou maior que Int32.MaxValue. Esse parâmetro é passado sem inicialização; qualquer valor originalmente fornecido em result será substituído.

Retornos

true se s foi convertido com êxito; caso contrário, false.

Exemplos

O exemplo a seguir chama o método Int32.TryParse(String, Int32) com vários valores de cadeia de caracteres diferentes.

C#
using System;

public class Example
{
   public static void Main()
   {
      string[] values = { null, "160519", "9432.0", "16,667",
                          "   -322   ", "+4302", "(100);", "01FA" };
      foreach (var value in values)
      {
         int number;

         bool success = int.TryParse(value, out number);
         if (success)
         {
            Console.WriteLine($"Converted '{value}' to {number}.");
         }
         else
         {
            Console.WriteLine($"Attempted conversion of '{value ?? "<null>"}' failed.");
         }
      }
   }
}
// The example displays the following output:
//       Attempted conversion of '<null>' 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.

Algumas das cadeias de caracteres que o método TryParse(String, Int32) não consegue converter neste exemplo são:

  • "9432.0". A conversão falha porque a cadeia de caracteres não pode conter um separador decimal; ele deve conter apenas dígitos integrais.

  • "16,667". A conversão falha porque a cadeia de caracteres não pode conter separadores de grupo; ele deve conter apenas dígitos integrais.

  • "(100)". A conversão falha porque a cadeia de caracteres não pode conter um sinal negativo diferente do definido pelas propriedades NumberFormatInfo.NegativeSign e NumberFormatInfo.NumberNegativePattern da cultura atual.

  • "01FA". A conversão falha porque a cadeia de caracteres não pode conter dígitos hexadecimal; ele deve conter apenas dígitos decimais.

Comentários

O método TryParse é como o método Parse, exceto que o método TryParse não gera uma exceção se a conversão falhar. Elimina a necessidade de usar o tratamento de exceções para testar um FormatException caso s seja inválido e não possa ser analisado com êxito.

O parâmetro s contém um número do formulário:

[ws] [sign]digits[ws]

Itens em colchetes ([ e ]) são opcionais. A tabela a seguir descreve cada elemento.

Elemento Descrição
ws Espaço em branco opcional.
assinar Um sinal opcional.
dígitos Uma sequência de dígitos variando de 0 a 9.

O parâmetro s é interpretado usando o estilo NumberStyles.Integer. Além dos dígitos decimais, somente espaços à esquerda e à direita, juntamente com um sinal à esquerda, são permitidos. Para definir explicitamente os elementos de estilo junto com as informações de formatação específicas da cultura que podem estar presentes em s, use o método Int32.TryParse(String, NumberStyles, IFormatProvider, Int32).

O parâmetro s é analisado usando as informações de formatação em um objeto NumberFormatInfo inicializado para a cultura atual do sistema. Para obter mais informações, consulte CurrentInfo.

Essa sobrecarga do método TryParse interpreta todos os dígitos no parâmetro s como dígitos decimais. Para analisar a representação de cadeia de caracteres de um número hexadecimal, chame a sobrecarga de Int32.TryParse(String, NumberStyles, IFormatProvider, Int32).

Confira também

Aplica-se a

.NET 9 e outras versões
Produto Versões
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0

TryParse(ReadOnlySpan<Byte>, IFormatProvider, Int32)

Origem:
Int32.cs
Origem:
Int32.cs

Tenta analisar um intervalo de caracteres UTF-8 em um valor.

C#
public static bool TryParse(ReadOnlySpan<byte> utf8Text, IFormatProvider? provider, out int result);

Parâmetros

utf8Text
ReadOnlySpan<Byte>

O intervalo de caracteres UTF-8 a serem analisados.

provider
IFormatProvider

Um objeto que fornece informações de formatação específicas da cultura sobre utf8Text.

result
Int32

No retorno, contém o resultado da análise bem-sucedida de utf8Text ou de um valor indefinido sobre a falha.

Retornos

true se utf8Text foi analisado com êxito; caso contrário, false.

Aplica-se a

.NET 9 e .NET 8
Produto Versões
.NET 8, 9

TryParse(ReadOnlySpan<Char>, IFormatProvider, Int32)

Origem:
Int32.cs
Origem:
Int32.cs
Origem:
Int32.cs

Tenta analisar um intervalo de caracteres em um valor.

C#
public static bool TryParse(ReadOnlySpan<char> s, IFormatProvider? provider, out int result);

Parâmetros

s
ReadOnlySpan<Char>

O intervalo de caracteres a serem analisados.

provider
IFormatProvider

Um objeto que fornece informações de formatação específicas da cultura sobre s.

result
Int32

Quando esse método é retornado, contém o resultado da análise bem-sucedida de sou um valor indefinido sobre a falha.

Retornos

true se s foi analisado com êxito; caso contrário, false.

Aplica-se a

.NET 9 e outras versões
Produto Versões
.NET 7, 8, 9

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

Origem:
Int32.cs
Origem:
Int32.cs

Tenta analisar um intervalo de caracteres UTF-8 em um valor.

C#
public static bool TryParse(ReadOnlySpan<byte> utf8Text, System.Globalization.NumberStyles style, IFormatProvider? provider, out int result);

Parâmetros

utf8Text
ReadOnlySpan<Byte>

O intervalo de caracteres UTF-8 a serem analisados.

style
NumberStyles

Uma combinação bit a bit de estilos numéricos que podem estar presentes em utf8Text.

provider
IFormatProvider

Um objeto que fornece informações de formatação específicas da cultura sobre utf8Text.

result
Int32

No retorno, contém o resultado da análise bem-sucedida de utf8Text ou de um valor indefinido sobre a falha.

Retornos

true se utf8Text foi analisado com êxito; caso contrário, false.

Aplica-se a

.NET 9 e .NET 8
Produto Versões
.NET 8, 9

TryParse(ReadOnlySpan<Byte>, Int32)

Origem:
Int32.cs
Origem:
Int32.cs

Tenta converter um intervalo de caracteres UTF-8 contendo a representação de cadeia de caracteres de um número em seu equivalente inteiro com sinal de 32 bits.

C#
public static bool TryParse(ReadOnlySpan<byte> utf8Text, out int result);

Parâmetros

utf8Text
ReadOnlySpan<Byte>

Um intervalo que contém os caracteres UTF-8 que representam o número a ser convertido.

result
Int32

Quando esse método é retornado, contém o valor inteiro com sinal de 32 bits equivalente ao número contido em utf8Text se a conversão foi bem-sucedida ou zero se a conversão falhou. Esse parâmetro é passado sem inicialização; qualquer valor originalmente fornecido no resultado será substituído.

Retornos

true se utf8Text foi convertido com êxito; caso contrário, false.

Aplica-se a

.NET 9 e .NET 8
Produto Versões
.NET 8, 9

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

Origem:
Int32.cs
Origem:
Int32.cs
Origem:
Int32.cs

Converte a representação de intervalo de um número em um formato específico de estilo e cultura especificado em seu equivalente inteiro com sinal de 32 bits. Um valor retornado indica se a conversão foi bem-sucedida.

C#
public static bool TryParse(ReadOnlySpan<char> s, System.Globalization.NumberStyles style, IFormatProvider? provider, out int result);
C#
public static bool TryParse(ReadOnlySpan<char> s, System.Globalization.NumberStyles style, IFormatProvider provider, out int result);

Parâmetros

s
ReadOnlySpan<Char>

Um intervalo que contém os caracteres que representam o número a ser convertido. O intervalo é interpretado usando o estilo especificado por style.

style
NumberStyles

Uma combinação bit a bit de valores de enumeração que indica os elementos de estilo que podem estar presentes em s. Um valor típico a ser especificado é Integer.

provider
IFormatProvider

Um objeto que fornece informações de formatação específicas da cultura sobre s.

result
Int32

Quando esse método é retornado, contém o valor inteiro com sinal de 32 bits equivalente do número contido em s, se a conversão foi bem-sucedida ou zero se a conversão falhou. A conversão falhará se o parâmetro s for null ou Empty, não estiver em um formato compatível com styleou representar um número menor que Int32.MinValue ou maior que Int32.MaxValue. Esse parâmetro é passado sem inicialização; qualquer valor originalmente fornecido em result será substituído.

Retornos

true se s foi convertido com êxito; caso contrário, false.

Aplica-se a

.NET 9 e outras versões
Produto Versões
.NET Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Standard 2.1

TryParse(String, NumberStyles, IFormatProvider, Int32)

Origem:
Int32.cs
Origem:
Int32.cs
Origem:
Int32.cs

Converte a representação de cadeia de caracteres de um número em um formato específico de cultura e estilo especificado em seu equivalente inteiro com sinal de 32 bits. Um valor retornado indica se a conversão foi bem-sucedida.

C#
public static bool TryParse(string s, System.Globalization.NumberStyles style, IFormatProvider provider, out int result);
C#
public static bool TryParse(string? s, System.Globalization.NumberStyles style, IFormatProvider? provider, out int result);

Parâmetros

s
String

Uma cadeia de caracteres que contém um número a ser convertido. A cadeia de caracteres é interpretada usando o estilo especificado por style.

style
NumberStyles

Uma combinação bit a bit de valores de enumeração que indica os elementos de estilo que podem estar presentes em s. Um valor típico a ser especificado é Integer.

provider
IFormatProvider

Um objeto que fornece informações de formatação específicas da cultura sobre s.

result
Int32

Quando esse método é retornado, contém o valor inteiro com sinal de 32 bits equivalente do número contido em s, se a conversão foi bem-sucedida ou zero se a conversão falhou. A conversão falhará se o parâmetro s for null ou Empty, não estiver em um formato compatível com styleou representar um número menor que Int32.MinValue ou maior que Int32.MaxValue. Esse parâmetro é passado sem inicialização; qualquer valor originalmente fornecido em result será substituído.

Retornos

true se s foi convertido com êxito; caso contrário, false.

Exceções

style não é um valor NumberStyles.

-ou-

style não é uma combinação de valores AllowHexSpecifier e HexNumber.

Exemplos

O exemplo a seguir chama o método Int32.TryParse(String, NumberStyles, IFormatProvider, Int32) com vários valores de cadeia de caracteres e NumberStyles diferentes.

C#
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 = int.TryParse(stringToConvert, styles,
                                   provider, out int 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.

Comentários

O método TryParse é como o método Parse, exceto que o método TryParse não gera uma exceção se a conversão falhar. Elimina a necessidade de usar o tratamento de exceções para testar um FormatException caso s seja inválido e não possa ser analisado com êxito.

O parâmetro style define os elementos de estilo (como espaço em branco ou um sinal positivo ou negativo) que são permitidos no parâmetro s para que a operação de análise tenha êxito. Deve ser uma combinação de sinalizadores de bits da enumeração NumberStyles. Dependendo do valor de style, o parâmetro s pode incluir os seguintes elementos:

[ws] [$] [sign] [dígitos,]dígitos[.fractional_digits][e[sign]digits][ws]

Ou, se o parâmetro style incluir AllowHexSpecifier:

[ws]hexdigits[ws]

Itens em colchetes ([ e ]) são opcionais. A tabela a seguir descreve cada elemento.

Elemento Descrição
ws Espaço em branco opcional. O espaço em branco poderá aparecer no início de s se style incluir o sinalizador NumberStyles.AllowLeadingWhite ou no final do s se style incluir o sinalizador NumberStyles.AllowTrailingWhite.
$ Um símbolo de moeda específico à cultura. Sua posição na cadeia de caracteres é definida pela propriedade CurrencyPositivePattern do objeto NumberFormatInfo retornado pelo método GetFormat do parâmetro provider. O símbolo de moeda poderá aparecer em s se style incluir o sinalizador NumberStyles.AllowCurrencySymbol.
assinar Um sinal opcional. Um símbolo de sinal poderá aparecer em s se style incluir os sinalizadores NumberStyles.AllowLeadingSign ou NumberStyles.AllowTrailingSign.
dígitos Uma sequência de dígitos de 0 a 9.
, Um separador de milhares específico da cultura. O separador de milhares da cultura especificada por provider poderá aparecer em s se style incluir o sinalizador NumberStyles.AllowThousands.
. Um símbolo de ponto decimal específico da cultura. O símbolo de ponto decimal da cultura especificada por provider poderá aparecer em s se style incluir o sinalizador NumberStyles.AllowDecimalPoint.
fractional_digits Uma ou mais ocorrências do dígito 0. Dígitos fracionários só poderão aparecer em s se style incluir o sinalizador NumberStyles.AllowDecimalPoint.
e O caractere 'e' ou 'E', que indica que o valor é representado na notação exponencial. O parâmetro s pode representar um número na notação exponencial se style incluir o sinalizador NumberStyles.AllowExponent.
hexdigits Uma sequência de dígitos hexadecimal de 0 a f ou 0 a F.

Observação

Todos os caracteres NUL de terminação (U+0000) em s são ignorados pela operação de análise, independentemente do valor do argumento style.

Uma cadeia de caracteres somente com dígitos decimais (que corresponde ao sinalizador NumberStyles.None) sempre é analisada com êxito. A maioria dos elementos de controle de membros NumberStyles restantes que podem estar, mas não precisam estar presentes nesta cadeia de caracteres de entrada. A tabela a seguir indica como membros NumberStyles individuais afetam os elementos que podem estar presentes no s.

Valores NumberStyles não compostos Elementos permitidos em s além de dígitos
NumberStyles.None Somente dígitos decimais.
NumberStyles.AllowDecimalPoint O ponto decimal (.) e fractional_digits elementos. No entanto, fractional_digits deve consistir em apenas um ou mais 0 dígitos ou o método retorna false.
NumberStyles.AllowExponent O parâmetro s também pode usar notação exponencial. Se s representar um número na notação exponencial, ele deverá representar um inteiro dentro do intervalo do tipo de dados Int32 sem um componente fracionário diferente de zero.
NumberStyles.AllowLeadingWhite O elemento ws no início de s.
NumberStyles.AllowTrailingWhite O elemento ws no final de s.
NumberStyles.AllowLeadingSign Um sinal pode aparecer antes de dígitos.
NumberStyles.AllowTrailingSign Um sinal pode aparecer após dígitos.
NumberStyles.AllowParentheses O sinal elemento na forma de parênteses que incluem o valor numérico.
NumberStyles.AllowThousands O elemento separador de milhares (,).
NumberStyles.AllowCurrencySymbol O elemento $.
NumberStyles.Currency Todos os elementos. O parâmetro s não pode representar um número hexadecimal ou um número na notação exponencial.
NumberStyles.Float O elemento ws no início ou no final de s, de sinal no início de se o símbolo decimal point (.). O parâmetro s também pode usar notação exponencial.
NumberStyles.Number Os elementos ws, sign, thousands separator (,) e decimal point (.).
NumberStyles.Any Todos os estilos, exceto s não podem representar um número hexadecimal.

Se o sinalizador NumberStyles.AllowHexSpecifier for usado, s deverá ser um valor hexadecimal sem um prefixo. Por exemplo, "C9AF3" analisa com êxito, mas "0xC9AF3" não. Os únicos outros sinalizadores que podem estar presentes em style são NumberStyles.AllowLeadingWhite e NumberStyles.AllowTrailingWhite. (A enumeração NumberStyles tem um estilo composto, NumberStyles.HexNumber, que inclui sinalizadores de espaço em branco.)

O parâmetro provider é uma implementação IFormatProvider, como um objeto CultureInfo ou um objeto NumberFormatInfo, cujo método GetFormat retorna um objeto NumberFormatInfo. O objeto NumberFormatInfo fornece informações específicas da cultura sobre o formato de s. Se provider for null, o objeto NumberFormatInfo da cultura atual será usado.

Confira também

Aplica-se a

.NET 9 e outras versões
Produto Versões
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 2.0, 2.1
UWP 10.0