方法 : 文字列が数値を表しているかどうかを確認する (C# プログラミング ガイド)

更新 : 2007 年 11 月

文字列が、指定された数値型の有効な表現であるかどうかを確認するには、静的 TryParse メソッドを使用します。このメソッドには、すべてのプリミティブ数値型が実装されており、また DateTimeIPAddress などの型も実装されています。"108" が有効な int かどうかを確認する方法を次の例に示します。

  int i = 0; 
  string s = "108";
  bool result = int.TryParse(s, out i); //i now = 108

文字列が数値以外の文字、または指定した型で表すには大きすぎる (または小さすぎる) 数値を格納している場合、TryParse は false を返し、out パラメータを 0 に設定します。それ以外の場合は true を返し、out パラメータを文字列の数値に設定します。

Bb384043.alert_note(ja-jp,VS.90).gifメモ :

文字列が数値文字列だけを含んでいても、使用する 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# プログラミング ガイド)

概念

数値文字列の解析

その他の技術情報

型の変換

型の書式設定