数値文字列の解析
更新 : 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 列挙体は、解析する文字列で使用できる書式を指定します。この列挙体を使用すると、通貨記号、小数点、指数部、かっこなどを含む文字列を解析できます。たとえば、en-US (米国の英語) カルチャでは、コンマを含む文字列を Parse メソッドを使用して整数値に変換するには、NumberStyles.AllowThousands 列挙体を渡す必要があります。
NumberStyles.AllowCurrencySymbol は、数値を小数ではなく通貨として解析するように指定します。NumberStyles.AllowDecimalPoint は、小数点を使用できることを示します。有効な小数点の文字は、現在の NumberFormatInfo オブジェクトの NumberDecimalSeparator プロパティと CurrencyDecimalSeparator プロパティによって決定します。NumberStyles.AllowThousands は、桁区切り記号を使用できることを示します。有効なグループ区切り記号は、現在の NumberFormatInfo オブジェクトの NumberGroupSeparator プロパティまたは CurrencyGroupSeparator プロパティによって決定します。数値以外の有効な文字型の完全な一覧については、NumberStyles 列挙体のドキュメントを参照してください。
NumberStyles 列挙体は、現在のカルチャによって指定されている文字を使用して、解析を支援します。解析する文字列に対応するカルチャを指定した CultureInfo オブジェクトを渡すことによってカルチャを指定していない場合は、現在のスレッドに関連付けられているカルチャが使用されます。
次のコード例は無効であり、実行すると例外が発生します。この例では、数値以外の文字を含む文字列の解析方法が間違っています。最初に、新しい CultureInfo を作成して Parse メソッドに渡し、解析に 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.
AllowThousands フラグを設定した NumberStyles 列挙体を適用すると、Parse メソッドは、上の例で例外を発生させたコンマを無視します。上の例と同じ文字列を使用して、例外を発生させないコードの例を次に示します。上の例と同じように、最初に新しい CultureInfo を作成して Parse メソッドに渡していますが、ここでは、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".