家の中でのこだわりスペースはどこですか?

いつもお世話になっております。

VB6を使っているのですが、文字列が半角数字かどうかの
判定をしたいのですが、何かいい方法はないでしょうか?

どうかよろしくお願いいたします。

A 回答 (3件)

#1さんの方法は半角“文字”の判定方法で、半角“数字”ではないかと・・・



最も単純に考えて、1文字ずつ文字コードを調べる方法です。関数にしてみました。


' 文字列が半角数字であるかを判定
' [引数]
' strValue ... 検証する文字列
' [戻り値]
' True .... 全て半角数字
' False ... 半角数字以外が含まれている
Private Function CheckNarrowNum(strValue As String) As Boolean
Dim strChr() As Byte, i As Long

'文字列をバイト配列に変換
strChr = strValue

'バイト配列を1つ置きに調べる(Unicodeのため)
For i = 0 To UBound(strChr) Step 2
'文字コードが 0 ~ 9 の場合
If strChr(i) >= 48 And strChr(i) <= 57 And strChr(i + 1) = 0 Then


'それ以外の場合
Else
'半角数字以外の文字なのでFalseを返す
CheckNarrowNum = False
Exit Function

End If
Next

'全て半角数字なのでTrueを返す
CheckNarrowNum = True
End Function


もっと効率のいい方法があるような気もしますが・・・。
Replace関数で0~9を全部空白に置き換えて、文字列がなくなるかどうかを調べる、という方法も考えましたけど、配列を1回だけループさせる方が速いと思ったのでコーディングしてません。
    • good
    • 0
この回答へのお礼

ご教示ありがとうございました。

参考にさせていただきます。

お礼日時:2006/09/14 09:21

お世話になります。



参考 URL が参考になると思います。
個人的には RegExp をオススメしたいです。

参考URL:http://homepage1.nifty.com/rucio/main/technique/ …
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。

今回はしたの方に教えていただいたコードを
使いたいと思います。
でも、RegExpは全く知らなかったので興味深く
見させていただきました。

お礼日時:2006/09/14 09:24

参考にしてください



Sub aaa(ByVal str As String)

' Dim str As String
' str = "アイウエオ"

If LenB(StrConv(str, vbFromUnicode)) = Len(str) Then

MsgBox ("全て半角文字です")

Else

MsgBox ("全角文字が含まれています")

End If

End Sub
    • good
    • 0
この回答へのお礼

わざわざご回答ありがとうございました。

大変参考になりました。

お礼日時:2006/09/14 09:16

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報