- PR -

IsNumericを使用せずに数値かチェックできますか?

投稿者投稿内容
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2005-07-01 22:15
unibon です。こんにちわ。

(文字列を)数値(の形式)かどうかをチェックするからには、いつかはその文字列を数値に変換する処理があるはずです。その変換処理でのルール(A)とチェックでのルール(B)を合わせないと、破綻します。(A が B より厳しいのならまだ良いですが。)
チェックの際に、変換処理と同じやりかたで変換して、例外が起きるか等で判断するほうが良いと思います。ただ、これは直接、例外の使用を勧めるわけではありません。
sou
ベテラン
会議室デビュー日: 2002/09/25
投稿数: 56
投稿日時: 2005-07-03 22:10
私は文字列が数値かどうかをチェックするときはDouble構造体に用意されている静的メソッドTryParseを使用しています。数値への変換も同時に行われるので重宝しています。以下に例を示します。(C#)

コード:
string s = "12.345";//チェックする文字列
double result;//変換された数値を設定する変数

if(double.TryParse(s,System.Globalization.NumberStyles.Number,System.Globalization.CultureInfo.CurrentCulture.NumberFormat,out result))
{
      //文字列が数値の場合
   //result変数には12.345の値が設定されます。
      Console.WriteLine(result);//12.345
      return "数値です!";
}
else
{
      //文字列が数値でない場合
   //result変数には0の値が設定されます。
      Console.WriteLine(result);//0
      return "数値ではありません!";

}

おおたか
会議室デビュー日: 2005/03/31
投稿数: 11
投稿日時: 2005-07-04 09:27
unibonさん、こんにちわ。ご回答ありがとうございます。

引用:

チェックの際に、変換処理と同じやりかたで変換して、例外が起きるか等で判断するほうが良いと思います。ただ、これは直接、例外の使用を勧めるわけではありません。


ご指摘のとおり、変換は大前提になっています。
例外に過敏に反応していたみたいです。
おおたか
会議室デビュー日: 2005/03/31
投稿数: 11
投稿日時: 2005-07-04 09:29
souさん、コードまで準備いただき、ありがとうございます。

引用:

souさんの書き込み (2005-07-03 22:10) より:
私は文字列が数値かどうかをチェックするときはDouble構造体に用意されている静的メソッドTryParseを使用しています。数値への変換も同時に行われるので重宝しています。以下に例を示します。(C#)


早速、VBでいけるか実験してみます。

スキルアップ/キャリアアップ(JOB@IT)