VBScriptで全角文字と半角文字を判別する方法を教えてください

回答の条件
  • 1人2回まで
  • 登録:2007/02/08 11:36:27
  • 終了:2007/02/13 07:16:52

ベストアンサー

id:llusall No.3

llusall回答回数505ベストアンサー獲得回数612007/02/08 13:04:39

ポイント50pt

Option Explicit

Dim moji

moji = "a"

If Len(moji) = LenByte(moji) Then

   MsgBox "ぜんぶ半角"

Else

    MsgBox "全角がまじってますな"

End If

moji = "あ"

If Len(moji) = LenByte(moji) Then

    MsgBox "ぜんぶ半角"

Else

    MsgBox "全角がまじってますな"

End If


Function LenByte(ByVal s)

    Dim c, i, k

    c = 0

    For i = 0 To Len(s) - 1

        k = Mid(s, i + 1, 1)

        If (Asc(k) And &HFF00) = 0 Then

            c = c + 1

        Else

            c = c + 2

        End If

    Next

    LenByte = c

End Function

id:noface

希望の動作ができました。有り難うございます。

追加質問になってしまうのですが、

(Asc(k) And &HFF00) = 0

の式はどのような条件を示しているのでしょうか

2007/02/08 13:24:51

その他の回答(4件)

id:taknt No.1

きゃづみぃ回答回数13539ベストアンサー獲得回数11982007/02/08 11:42:55

ポイント5pt

http://www.tohoho-web.com/lng/199912/99120238.htm

こちらに記載されている文字数とバイト数を比較してという方法は いかがでしょうか?

id:noface

WScript.echo LenB("a")

でわかるかと思いますが、UNICODEのためか半角文字も2byte扱いになるようで、ご紹介の方法は有効ではないようです。

2007/02/08 13:04:30
id:K_SUKE No.2

K_SUKE回答回数73ベストアンサー獲得回数52007/02/08 12:33:26

ポイント5pt

こちらのサイトが参考になると思います

http://www.tohoho-web.com/lng/199912/99120238.htm

id:noface

回答1と同様です

2007/02/08 13:05:25
id:llusall No.3

llusall回答回数505ベストアンサー獲得回数612007/02/08 13:04:39ここでベストアンサー

ポイント50pt

Option Explicit

Dim moji

moji = "a"

If Len(moji) = LenByte(moji) Then

   MsgBox "ぜんぶ半角"

Else

    MsgBox "全角がまじってますな"

End If

moji = "あ"

If Len(moji) = LenByte(moji) Then

    MsgBox "ぜんぶ半角"

Else

    MsgBox "全角がまじってますな"

End If


Function LenByte(ByVal s)

    Dim c, i, k

    c = 0

    For i = 0 To Len(s) - 1

        k = Mid(s, i + 1, 1)

        If (Asc(k) And &HFF00) = 0 Then

            c = c + 1

        Else

            c = c + 2

        End If

    Next

    LenByte = c

End Function

id:noface

希望の動作ができました。有り難うございます。

追加質問になってしまうのですが、

(Asc(k) And &HFF00) = 0

の式はどのような条件を示しているのでしょうか

2007/02/08 13:24:51
id:taknt No.4

きゃづみぃ回答回数13539ベストアンサー獲得回数11982007/02/08 13:23:06

ポイント25pt

http://www.res-system.com/weblog/item/241/

こちらのやり方でできます。

id:noface

こちらでも希望の動作ができました

ありがとうございます

2007/02/08 13:36:13
id:llusall No.5

llusall回答回数505ベストアンサー獲得回数612007/02/08 13:29:47

ポイント30pt

VBScript でシフト JIS の文字列のバイト数を数える (unibon)

http://www.geocities.co.jp/SiliconValley/4334/unibon/asp/len.htm...

そういえば以前、unibonさんのところから頂いたロジックでした。

このことについてunibonさんは次のように解説しています。

http://72.14.235.104/search?q=cache:rUGWWv7pWYoJ:tryasp.winscom....



参考になりますでしょうか?

id:noface

勉強が足りず完全に理解できておりませんが、

いただいたページを元に調べてみようと思います

ありがとうございました

2007/02/08 13:35:21

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません