VB.NET数値かどうかをチェックする (IsNumeric)

スポンサーリンク

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

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

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

サンプルコード

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

VB.NET 全般
Option Strict On

Public NotInheritable Class Validation

  #Region " IsNumeric メソッド (+1) "

    ''' -----------------------------------------------------------------------------
    ''' <summary>
    '''     文字列が数値であるかどうかを返します。</summary>
    ''' <param name="stTarget">
    '''     検査対象となる文字列。<param>
    ''' <returns>
    '''     指定した文字列が数値であれば True。それ以外は False。</returns>
    ''' -----------------------------------------------------------------------------
    Public Shared Overloads Function IsNumeric(ByVal stTarget As String) As Boolean
        Return Double.TryParse( _
            stTarget, _
            System.Globalization.NumberStyles.Any,
            Nothing, _
            0# _
        )
    End Function

    ''' -----------------------------------------------------------------------------
    ''' <summary>
    '''     オブジェクトが数値であるかどうかを返します。</summary>
    ''' <param name="oTarget">
    '''     検査対象となるオブジェクト。<param>
    ''' <returns>
    '''     指定したオブジェクトが数値であれば True。それ以外は False。</returns>
    ''' -----------------------------------------------------------------------------
    Public Shared Overloads Function IsNumeric(ByVal oTarget As Object) As Boolean
        Return IsNumeric(oTarget.ToString())
    End Function

  #End Region

End Class

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

VB.NET 全般
    ' 文字列が数値かどうかをチェックする
    If Validation.IsNumeric("-123,456") Then
        MessageBox.Show("数値です")
    End If

関連するリファレンス

準備中です。

スポンサーリンク