剖析數值字串

更新:2007 年 11 月

所有數值型別都有靜態 Parse 方法,可用來將實值型別的字串代表轉換成實際的實值型別。這些方法可以讓您剖析使用數值格式字串中所涵蓋之其中一個格式規範所產生的字串。

用來表示貨幣符號、千位分隔符號和小數點的字元是在格式提供者中定義。Parse 方法接受格式提供者,可以讓您指定和明確剖析特定文化特性的字串。如果沒有指定格式提供者,便會使用和目前執行緒關聯的提供者。如需詳細資訊,請參閱格式化概觀

下列程式碼範例會將字串轉換成整數值、遞增該值,並顯示結果。

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

NumberStyles 列舉型別 (Enumeration) 表示要剖析之字串所允許的格式。您可以使用這個列舉型別來剖析包含貨幣符號、小數點、指數、括弧等字元的字串。例如,在 en-US 文化特性中,如果沒有傳遞 NumberStyles.AllowThousands 列舉型別,就不能使用 Parse 方法,將包含逗號的字串轉換成整數值。

NumberStyles.AllowCurrencySymbol 會指定將數字當成貨幣來剖析,而非當成小數點。NumberStyles.AllowDecimalPoint 表示允許使用小數點。有效小數點字元是由目前 NumberFormatInfo 物件的 NumberDecimalSeparatorCurrencyDecimalSeparator 屬性來決定。NumberStyles.AllowThousands 表示允許使用群組分隔符號。有效群組分隔符號是由目前 NumberFormatInfo 物件的 NumberGroupSeparatorCurrencyGroupSeparator 屬性來決定。如需有效的非數值字元型別的完整列表,請參閱 NumberStyles 列舉型別文件。

NumberStyles 列舉型別會使用目前文化特性所指定的字元,來協助進行剖析。如果您不是用傳遞 CultureInfo 物件 (設定為對應剖析字串的文化特性) 的方式來指定文化特性,便會使用和目前執行緒關聯的文化特性。

下列程式碼範例無效,而且將會引發例外狀況。它將會說明以不正確的方式剖析包含非數值字元的字串。首先會建立新的 CultureInfo 物件,然後將其傳遞至 Parse 方法,指定用 en-US 文化特性 (Culture) 進行剖析。

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.

當您以 AllowThousands 旗標套用 NumberStyles 列舉型別時,Parse 方法會忽略上述範例中引發例外狀況的逗號。下列程式碼範例會使用和上述範例相同的字串,但是並不會引發例外狀況。和上述範例類似,首先會建立新的 CultureInfo,然後將其傳遞至 Parse 方法,以指定 en-US 文化特性 (Culture) 所使用的千位數分隔符號進行剖析。

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

請參閱

參考

NumberStyles

其他資源

剖析字串

格式化型別

轉換型別