プロが教える店舗&オフィスのセキュリティ対策術

VBScriptである文字列に半角文字が含まれているかどうか調べる方法について、ネットで調べてソースコードを拾ってきたのですが...
IFの条件でなぜ全角、半角が判断できるか分かりません。教えてください。お願いします。

iLen = Len(str1)
iLenByte = 0
'--- 文字列のバイト数
For i = 2 To iLen
strField = Mid(str1, i, 1)
iCode = Asc(strField)
If iCode > 0 Then
'--- 半角文字
Else
'--- 全角文字
End If
Next

A 回答 (2件)

半角文字が含まれているかどうかだけだったら、


If LenB(str) = 2*Len(str) Then
'半角文字は含まれていない
Else
'半角文字が含まれている
End If
で判断できます。
    • good
    • 1
この回答へのお礼

早速のご回答ありがとうございました。
ご参考にさせて頂きます。

お礼日時:2005/08/25 10:36

ASC関数が返す文字コードはSJIS(VbScriptのマニュアルより)


日本語(全角)は、SJISだと第1バイトが必ず80H(16進…128)より大きいので、符号付16Bit整数(全角1文字=2バイト=16Bit)としてみると必ず負になる
逆に半角(特にアルファベット,数字など)は80Hより小さいので、符号付8Bit整数としてみても符号付16Bit整数に変換(拡張)してみても正になる
だから、正負で半角・全角が判断できる

注)説明のため、80H以上が全てSJISのような書き方になっていますが、SJISとして使用される(定義される)文字コードの範囲はもっと限定されます。
    • good
    • 2
この回答へのお礼

早速のご回答ありがとうございました。
ご参考にさせて頂きます。

お礼日時:2005/08/25 10:36

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

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