Condividi tramite


Analisi delle stringhe numeriche

Tutti i tipi numerici dispongono di un metodo statico Parse che consente di convertire una rappresentazione di stringa in un tipo numerico effettivo. Utilizzando questi metodi è possibile analizzare le stringhe generate mediante uno degli identificatori di formato descritti in Stringhe di formato numerico.

I caratteri utilizzati per la rappresentazione dei simboli di valuta, dei separatori delle migliaia e dei separatori decimali sono definiti nei provider di formato. Il metodo Parse accetta i provider di formato, consentendo di specificare e analizzare in modo esplicito le stringhe specifiche della lingua. Se non viene specificato alcun provider di formato, viene utilizzato il provider associato al thread corrente. Per ulteriori informazioni, vedere Cenni preliminari sulla formattazione.

Nell'esempio di codice seguente una stringa viene convertita in un valore integer, il valore viene incrementato e il risultato viene visualizzato.

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". 

L'enumerazione NumberStyles indica il formato consentito di una stringa da analizzare. È possibile utilizzare questa enumerazione per analizzare una stringa contenente un simbolo di valuta, un separatore decimale, un esponente, alcune parentesi e così via. Nella lingua en-US, ad esempio, non è possibile convertire una stringa contenente una virgola in un valore integer mediante il metodo Parse se non viene passata l'enumerazione NumberStyles.AllowThousands.

NumberStyles.AllowCurrencySymbol specifica che un numero deve essere analizzato come valuta anziché come numero decimale. NumberStyles.AllowDecimalPoint indica che è consentito un separatore decimale. I separatori decimali validi sono determinati dalla proprietà NumberDecimalSeparator o CurrencyDecimalSeparator dell'oggetto NumberFormatInfo corrente. NumberStyles.AllowThousands indica che sono consentiti i separatori di gruppo. I separatori di gruppo validi sono determinati dalla proprietà NumberGroupSeparator o CurrencyGroupSeparator dell'oggetto NumberFormatInfo corrente. Per una tabella completa dei tipi di caratteri non numerici validi, consultare la documentazione relativa all'enumerazione NumberStyles.

Per semplificare l'analisi, l'enumerazione NumberStyles utilizza i caratteri specificati dalla lingua corrente. Se non viene specificata una lingua, passando un oggetto CultureInfo impostato sulla lingua corrispondente alla stringa che si sta analizzando, viene utilizzata la lingua associata al thread corrente.

L'esempio di codice seguente non è valido e genererà un'eccezione. In questo esempio viene illustrata la modalità non corretta per eseguire l'analisi di una stringa contenente caratteri non numerici. Viene dapprima creato un nuovo CultureInfo, che viene passato al metodo Parse per impostare la lingua per l'analisi su en-US.

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 viene applicata l'enumerazione NumberStyles con il flag AllowThousands, il metodo Parse ignora la virgola che nell'esempio precedente ha generato l'eccezione. Nell'esempio di codice seguente, viene utilizzata la stessa stringa dell'esempio precedente, ma in questo caso non viene generata l'eccezione. Come nell'esempio precedente, viene innanzitutto creato un nuovo CultureInfo che viene passato al metodo Parse per specificare che l'analisi verrà effettuata utilizzando il separatore delle migliaia della lingua en-US.

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".

Vedere anche

Riferimenti

NumberStyles Enumeration

Altre risorse

Analisi delle stringhe
Formattazione dei tipi di dati
Conversione di tipi