文字列中の漢字を判別

解決


vbクリップ  2005-05-17 20:17:19  No: 89862

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

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

宜しくお願いします。


いな  2005-05-17 20:24:10  No: 89863

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

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

それ以外!


papa  2005-05-17 21:26:59  No: 89864

こんなのは、

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 17:43:44  No: 89865

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

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

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


papa  2005-05-18 19:28:36  No: 89866

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

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 22:58:03  No: 89867

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

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

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加