ある文字が数値型に変換できるかどうか確認するにはどうしたら
いいのでしょうか??
数値型に変えられない場合は、メッセージを出力したいのですが、
うまくいきません。。
教えてください。
お願いします。
> ある文字が数値型に変換できるかどうか確認するにはどうしたら
> いいのでしょうか??
システム要件によって、「数値」の許容範囲は異なると思います。
たとえば、全角半角の扱いをどうするのか、負数や小数はOKなのか、
極端に大きい数値などは許可されるのか、空文字列はNGなのか、
ローマ数字は許容するのか、16進数表記や8進数表記はOKなのかなど…。
それによって、コーディング方法も変わってくると思いますので、
まずは、そのあたりの仕様をきっちり決めておくのが先決かと。
で。
簡単なところでは、Microsoft.VisualBasic.Information.IsNumeric が使えます。
書式を細かく定義する必要がある場合は、正規表現でどうぞ。
Private Sub Changed(ByVal sender As Object, ByVal e As System.EventArgs) Handles TextBox1.TextChanged
Dim F(4) As Boolean
F(0) = IsNumeric(TextBox1.Text)
F(1) = (New System.Text.RegularExpressions.Regex("^\d+$")).IsMatch(TextBox1.Text)
F(2) = (New System.Text.RegularExpressions.Regex("^\d+$")).IsMatch(TextBox1.Text)
F(3) = TextBox1.TextLength > 0
F(4) = TextBox1.TextLength > 0
Dim Ch As Char
For Each Ch In TextBox1.Text.ToCharArray()
F(3) = F(3) And Char.IsDigit(Ch)
F(4) = F(4) And Char.IsNumber(Ch)
Next
Label1.Text = String.Format("IsNumeric関数={0}", F(0))
Label2.Text = String.Format("正規表現 \d+ ={0}", F(1))
Label3.Text = String.Format("正規表現 \d* ={0}", F(2))
Label4.Text = String.Format("Char.IsDigit ={0}", F(3))
Label5.Text = String.Format("Char.IsNumber={0}", F(4))
End Sub