文字列中の漢字を判別

解決


vbクリップ  2005-05-17 11:17:19  No: 89862  IP: [192.*.*.*]

はじめまして、vbクリップです。
早速宜しくお願いします。

例えば、"も字れつ" とある中に「字」が漢字だという
判断方法と言うのはあるんでしょうか?

宜しくお願いします。

編集 削除
いな  2005-05-17 11:24:10  No: 89863  IP: [192.*.*.*]

えっと、ゴメン略式で回答します。

余りスマートなやり方ではないですが
ひらがな、あ〜んの文字コードは?
カタカナ、ア〜ンの文字コードは?
数値、0〜9の文字コードは?
アルファベットa〜z、A〜Zの文字コードは?
(あと半角もかな)

それ以外!

編集 削除
papa  2005-05-17 12:26:59  No: 89864  IP: [192.*.*.*]

こんなのは、

Sub test()

    Dim strtmp As String
    Dim i As Long
    
    strtmp = "も字れつモジレツmojiretu漢字"

    strtmp = StrConv(strtmp, vbKatakana)
    strtmp = StrConv(strtmp, vbNarrow)

    Debug.Print strtmp

    For i = 1 To Len(strtmp)

        If StrConv(Mid$(strtmp, i, 1), vbWide) = Mid$(strtmp, i, 1) Then

            Debug.Print i & "文字目は漢字", Chr(34) & Mid$(strtmp, i, 1) & Chr(34)

        End If
        
    Next i
    
End Sub

編集 削除
vbクリップ  2005-05-18 08:43:44  No: 89865  IP: [192.*.*.*]

いなさん papaさん 早速のレスありがとうございます。

papaさんの方法は考えもつきませんでした。すばらしい。
しかし、全角の記号がある場合にそれも漢字と認識してしまいます。

一番確実なのは、漢字の文字コードからチェックしたほうがいいんでしょうか?
しかし、漢字の文字コードの範囲や文字コードの変換方法が解りません。
宜しくおねがいします。

編集 削除
papa  2005-05-18 10:28:36  No: 89866  IP: [192.*.*.*]

> しかし、全角の記号がある場合にそれも漢字と認識してしまいます。
う〜ん、なかなか奥が深い
では、

http://crocro.com/pc/write/hide/chimarl09_02.html
を参考にさせていただきました
1バイト目のチェックのみで良さそうですが?

Sub test()

    Dim strtmp As String
    Dim byttemp() As Byte
    Dim i As Long
    
    strtmp = "も字れつモジレツmojiretu漢字□●"

    strtmp = StrConv(strtmp, vbKatakana)
    strtmp = StrConv(strtmp, vbNarrow)
    

    Debug.Print strtmp

    For i = 1 To Len(strtmp)

        If StrConv(Mid$(strtmp, i, 1), vbWide) = Mid$(strtmp, i, 1) Then
            byttemp = StrConv(Mid$(strtmp, i, 1), vbFromUnicode)
            If Hex(byttemp(0)) & Hex(byttemp(1)) >= "8040" And Hex(byttemp(0)) & Hex(byttemp(1)) <= "879F" Then
                Debug.Print i & "文字目は記号", Chr(34) & Mid$(strtmp, i, 1) & Chr(34)
            Else
                Debug.Print i & "文字目は漢字", Chr(34) & Mid$(strtmp, i, 1) & Chr(34)
            End If
        End If
        
    Next i
    
End Sub

編集 削除
vbクリップ  2005-05-18 13:58:03  No: 89867  IP: [192.*.*.*]

papaさん レスありがとうございます。

おかげで、希望通りの動作をすることができました。
ありがとうございました。

しかし、Hex文字列をそのまま等号式で比較できるんですね。
大変勉強になりました。

編集 削除