[リストへもどる]
一括表示

投稿時間:2002/11/18(Mon) 19:30
投稿者名:KKK
Eメール:
URL :
タイトル:
半角の識別
最近良くお世話になってます。
例えば
(ここから)→12124234908205gfsh04u gskl←(ここまで)が半角である、と判断してくれる関数はあるのでしょうか?出きれば(ここから)→ふぁいえるfたそふぁ999←(ここまで)は、全角である、というのも教えていただければ幸いです。
よろしくお願いします。

投稿時間:2002/11/18(Mon) 20:52
投稿者名:NAO★
Eメール:
URL :
タイトル:
Re: 半角の識別
そういう関数はないので自分で作りましょう。
Asc() をつかって256以上なら全角です

投稿時間:2002/11/18(Mon) 21:00
投稿者名:KKK
Eメール:
URL :
タイトル:
Re^2: 半角の識別
> そういう関数はないので自分で作りましょう。
> Asc() をつかって256以上なら全角です
ありがとうございました。
張り切って作ります。

投稿時間:2002/11/18(Mon) 21:37
投稿者名:NAO★
Eメール:
URL :
タイトル:
Re^2: 半角の識別 【訂正】
> そういう関数はないので自分で作りましょう。
> Asc() をつかって256以上なら全角です

すみません、チョンボしてしまいました。訂正です!
0〜255までが半角でそれ以外は全角です。
つまり全角の場合、値がマイナスになることもあります。(-32,768 〜 32,767 )

投稿時間:2002/11/18(Mon) 22:53
投稿者名:よねKEN
Eメール:
URL :http://www5b.biglobe.ne.jp/~yone-ken/
タイトル:
Re^3: 半角の識別 【訂正】
> > そういう関数はないので自分で作りましょう。
> > Asc() をつかって256以上なら全角です
>
> すみません、チョンボしてしまいました。訂正です!
> 0〜255までが半角でそれ以外は全角です。
> つまり全角の場合、値がマイナスになることもあります。(-32,768 〜 32,767 )

細かい話なんで、まぁどうでもいいツッコミかもしれませんが、
Shift_JISの上位バイトになるものはどれも&H80(0x80)以上なので、
全角文字に対するAsc関数の結果は、必ず(Integerでの)負の数になると思います。

投稿時間:2002/11/18(Mon) 22:25
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re: 半角の識別
> (ここから)→12124234908205gfsh04u gskl←(ここまで)が
> 半角である、と判断してくれる関数はあるのでしょうか?出きれば
>(ここから)→ふぁいえるfたそふぁ999←(ここまで)は、
> 全角である、というのも教えていただければ幸いです。

どちらも、「RegExp オブジェクト」で判定できますよ。

投稿時間:2002/11/19(Tue) 10:00
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
RegExpオブジェクトのサンプル
> どちらも、「RegExp オブジェクト」で判定できますよ。

Private Sub Command1_Click()
    Dim RegExp As Object
    Dim Match As Object
    Dim Source As String

    Source = Text1.Text

    Set RegExp = CreateObject("VBScript.RegExp")
    RegExp.Global = True    '文字列全体を検索対象にする
    RegExp.IgnoreCase = False   '大文字小文字を区別する
    RegExp.MultiLine = True '複数行にわたる文字列を扱う

    Debug.Print "===半角位置==="
    RegExp.Pattern = "[ -~]+"
    For Each Match In RegExp.Execute(Source)
        Debug.Print "開始位置:" & Match.FirstIndex; Tab(15);
        Debug.Print "終了位置:" & Match.FirstIndex + Match.Length - 1; Tab(30);
        Debug.Print "『"; Match.Value; "』"
    Next

    Debug.Print "===全角位置==="
    RegExp.Pattern = "[^ -~]+"
    For Each Match In RegExp.Execute(Source)
        Debug.Print "開始位置:" & Match.FirstIndex; Tab(15);
        Debug.Print "終了位置:" & Match.FirstIndex + Match.Length - 1; Tab(30);
        Debug.Print "『"; Match.Value; "』"
    Next

    Set RegExp = Nothing
End Sub