文字列から数値のみを取得するには?

解決


VB初心者  2005-08-04 11:35:06  No: 91264  IP: [192.*.*.*]

文字列から数値のみを取得したいのですが、どうやればいいのかわかりません。
どなたか教えてくださいませんか?お願いします。

編集 削除
VB初心者  2005-08-04 12:04:53  No: 91265  IP: [192.*.*.*]

自分で作って見ました。

Private Function GetNumValue(ByVal strData As String) As Long
On Error GoTo ErrHandler

    Dim i As Integer
    Dim strChar As String
    Dim strWork As String

    For i = 1 To Len(strData)
        strChar = Mid$(strData, i, 1)
        Select Case strChar
            Case 0 To 9
                strWork = strWork & strChar
        End Select
    Next i

    GetNumValue = strWork

    Exit Function

ErrHandler:
    GetNumValue = 0

End Function

編集 削除
ひろ  2005-08-04 12:42:23  No: 91266  IP: [192.*.*.*]

1カ所だけ気になったので。

> Case 0 To 9

Case "0" To "9"

の方が良い気がします。文字列は文字列と比較した方が良いでしょうから。

#厳密に言えば文字列型からLongへの変換も明示した方が良いのですが、
#今回は数字列からの整数への変換で意図せぬ動作の余地がありませんから
#実用上問題はないと思います。

編集 削除
VB初心者  2005-08-04 13:46:19  No: 91267  IP: [192.*.*.*]

そうですね。ありがとうございました。

また、他にはどういったやり方がありますか?

編集 削除
GOD  2005-08-04 15:27:23  No: 91268  IP: [192.*.*.*]

>また、他にはどういったやり方がありますか?
>
Selectの代わりにLikeを使うとか。
If strChar Like "[0-9]" Then

本当はループさせずに出来るとかっこよさそうだけどね。

編集 削除
あん  2005-08-04 16:37:06  No: 91269  IP: [192.*.*.*]

処理のとこだけ

set Reg = new RegExp

Reg.Pattern = "[^0-9]"
Reg.Global = True
GetNumValue = Reg.replace(strChar,"")

編集 削除
VB初心者  2005-08-04 18:41:06  No: 91270  IP: [192.*.*.*]

解決しました。

編集 削除