Analisando sequências de caracteres numéricas
Todos os tipos numéricos têm um método Parse estático que você pode usar para converter uma representação de sequência de caracteres de um tipo numérico em um tipo numérico de fato.Esses métodos permitem que você analise as sequências de caracteres que foram produzidas usando um dos especificadores de formatação abordados em Sequências de caracteres de formato numérico.
Os caracteres usados para representar símbolos de moeda, separadores de milhar e pontos decimais são definidos nos provedores de formato.O método Parse aceita um provedor de formato, permitindo que você especifique e explicite sequências de caracteres de análise específicas de uma cultura.Se nenhum provedor de formato for especificado, então o provedor associado com o segmento atual é usado.Para mais informações, consulte Visão Geral Sobre Formatação.
O exemplo de código a seguir converte uma sequência de caracteres em um valor inteiro, aumenta esse valor e exibe o resultado.
Dim MyString As String = "12345"
Dim MyInt As Integer = Integer.Parse(MyString)
MyInt += 1
Console.WriteLine(MyInt)
' The result is "12346".
string MyString = "12345";
int MyInt = int.Parse(MyString);
MyInt++;
Console.WriteLine(MyInt);
// The result is "12346".
A enumeração NumberStyles indica o formato permitido de uma sequência de caracteres a ser analisada.Você pode usar essa enumeração para analisar uma sequência de caracteres que contém um símbolo de moeda, um ponto decimal, um expoente, parênteses e assim por diante.Por exemplo, na cultura en-US, uma sequência de caracteres que contém uma vírgula não pode ser convertida em um valor inteiro usando o método Parse se a enumeração NumberStyles.AllowThousands não for passada.
N umberStyles.AllowCurrencySymbol especifica que um número deve ser analisado como uma moeda em vez de como um decimal.NumberStyles.AllowDecimalPoint indica que um ponto decimal é permitido.Caracteres válidos de ponto decimal são determinadas pelas propriedades NumberDecimalSeparator ou CurrencyDecimalSeparator do objeto NumberFormatInfo atual.NumberStyles.AllowThousands indica que separadores de grupo são permitidos.Caracteres válidos de separadores de grupo são determinados pelas propriedades NumberGroupSeparator ou CurrencyGroupSeparator do objeto NumberFormatInfo atual.Para uma tabela completa de tipos de caracteres não numéricos válidos, consulte a documentação de enumeração NumberStyles .
A enumeração NumberStyles usa os caracteres especificados pela cultura atual para ajudar na análise.Se você não especificar uma cultura passando um objeto CultureInfo definido para a cultura que corresponde à sequência de caracteres que você está analisando, a cultura associada com o segmento atual será usada.
O exemplo de código a seguir é inválido e gerará uma exceção.Ele ilustra a maneira inadequada para analisar uma sequência de caracteres contendo caracteres não numéricos.Um novo CultureInfo é primeiramente criado e passado para o método Parse para especificar que a cultura en-US seja usada para análise.
Imports System.Globalization
Dim MyCultureInfo As CultureInfo = new CultureInfo("en-US")
Dim MyString As String = "123,456"
Dim MyInt As Integer = Integer.Parse(MyString, MyCultureInfo)
Console.WriteLine(MyInt)
' Raises System.Format exception.
using System.Globalization;
CultureInfo MyCultureInfo = new CultureInfo("en-US");
string MyString = "123,456";
int MyInt = int.Parse(MyString, MyCultureInfo);
Console.WriteLine(MyInt);
// Raises System.Format exception.
Quando você aplica a enumeração NumberStyles com o sinalizador AllowThousands, o método Parse ignora a vírgula que gerou a exceção no exemplo anterior.O exemplo de código a seguir usa a mesma sequência de caracteres que o exemplo anterior, mas não gera uma exceção.Similarmente ao exemplo anterior, um novo CultureInfo é primeiro criado e passado para o método Parse para especificar que o separador de milhar usado pela cultura en-US é usado na análise.
Imports System.Globalization
Dim MyCultureInfo As CultureInfo = new CultureInfo("en-US")
Dim MyString As String = "123,456"
Dim MyInt As Integer = Integer.Parse(MyString, NumberStyles.AllowThousands, MyCultureInfo)
Console.WriteLine(MyInt)
' The result is "123456".
using System.Globalization;
CultureInfo MyCultureInfo = new CultureInfo("en-US");
string MyString = "123,456";
int MyInt = int.Parse(MyString, NumberStyles.AllowThousands, MyCultureInfo);
Console.WriteLine(MyInt);
// The result is "123456".