C#数値かどうかをチェックする (IsNumeric)

スポンサーリンク

ある式が数値かどうか判断するようなエラーチェックが必要になる場合があります。VB で言えば IsNumeric 関数のようなメソッドです。

Microsoft.VisualBasic 名前空間配下に IsNumeric メソッドは存在するものの、この名前空間を使いたくないという理由から自作のメソッドを作ることが多いようです。

.NET Framework 的には System.Double 構造体の TryParse メソッドを使うことになります。TryParse メソッドは、何を数値として見なすか、System.Globalization.NumberStyles の引数で細かく設定することが可能です。今回は、VB の IsNumeric とほぼ同じ動きをさせることを考えたメソッドを紹介します。

サンプルコード

以下にサンプルコードを示します。

C# 全般
using System;

/// -----------------------------------------------------------------------------
/// <summary>
///     検証・エラーチェックをサポートした静的クラスです。
/// </summary>
/// -----------------------------------------------------------------------------

public sealed class Validation {

  #region IsNumeric メソッド (+1)

    /// -----------------------------------------------------------------------------
    /// <summary>
    ///     文字列が数値であるかどうかを返します。</summary>
    /// <param name="stTarget">
    ///     検査対象となる文字列。<param>
    /// <returns>
    ///     指定した文字列が数値であれば true。それ以外は false。</returns>
    /// -----------------------------------------------------------------------------
    public static bool IsNumeric(string stTarget) {
        double dNullable;

        return double.TryParse(
            stTarget,
            System.Globalization.NumberStyles.Any,
            null,
            out dNullable
        );
    }

    /// -----------------------------------------------------------------------------
    /// <summary>
    ///     オブジェクトが数値であるかどうかを返します。</summary>
    /// <param name="oTarget">
    ///     検査対象となるオブジェクト。<param>
    /// <returns>
    ///     指定したオブジェクトが数値であれば true。それ以外は false。</returns>
    /// -----------------------------------------------------------------------------
    public static bool IsNumeric(object oTarget) {
        return IsNumeric(oTarget.ToString());
    }

  #endregion

}

使用例は以下のようになります。

C# 全般
    // 文字列が数値かどうかをチェックする
    if (Validation.IsNumeric("-123,456")) {
        MessageBox.Show("数値です");
    }

関連するリファレンス

準備中です。

スポンサーリンク