方法 : 文字列が数値を表しているかどうかを確認する (C# プログラミング ガイド)
更新 : 2007 年 11 月
文字列が、指定された数値型の有効な表現であるかどうかを確認するには、静的 TryParse メソッドを使用します。このメソッドには、すべてのプリミティブ数値型が実装されており、また DateTime、IPAddress などの型も実装されています。"108" が有効な int かどうかを確認する方法を次の例に示します。
int i = 0;
string s = "108";
bool result = int.TryParse(s, out i); //i now = 108
文字列が数値以外の文字、または指定した型で表すには大きすぎる (または小さすぎる) 数値を格納している場合、TryParse は false を返し、out パラメータを 0 に設定します。それ以外の場合は true を返し、out パラメータを文字列の数値に設定します。
メモ : |
---|
文字列が数値文字列だけを含んでいても、使用する TryParse メソッドの型として有効ではない場合があります。たとえば、"256" は byte の有効値ではありませんが、int としては有効です。"98.6" は int の有効値ではありませんが、有効な decimal です。 |
使用例
long 値、byte 値、および decimal 値の文字列表現を指定して TryParse を使用する方法を次の例に示します。
string numString = "1287543"; //"1287543.0" will return false for a long
long number1 = 0;
bool canConvert = long.TryParse(numString, out number1);
if (canConvert == true)
Console.WriteLine("number1 now = {0}", number1);
else
Console.WriteLine("numString is not a valid long");
byte number2 = 0;
numString = "255"; // A value of 256 will return false
canConvert = byte.TryParse(numString, out number2);
if (canConvert == true)
Console.WriteLine("number2 now = {0}", number2);
else
Console.WriteLine("numString is not a valid byte");
decimal number3 = 0;
numString = "27.3"; //"27" is also a valid decimal
canConvert = decimal.TryParse(numString, out number3);
if (canConvert == true)
Console.WriteLine("number3 now = {0}", number3);
else
Console.WriteLine("number3 is not a valid decimal");
堅牢性の高いプログラム
プリミティブ数値型は、Parse 静的メソッドも実装します。このメソッドは、文字列が有効な数値でない場合は例外をスローします。一般に、数値が有効でない場合は単に false を返す TryParse の方が効率的です。
セキュリティ
テキスト ボックス、コンボ ボックスなどのコントロールからのユーザー入力を検証する場合は、常に TryParse メソッドまたは Parse メソッドを使用してください。
参照
処理手順
方法 : バイト配列を int に変換する (C# プログラミング ガイド)
方法 : string を int に変換する (C# プログラミング ガイド)
方法 : 16 進文字列と数値型の間で変換を行う (C# プログラミング ガイド)