カタカナ判定


サスライ人  2004-12-22 12:24:58  No: 118463  IP: [192.*.*.*]

こんにちは。

文字列にカタカナ(全角・半角)が含まれているかどうかをチェックする
方法として、スマートな方法はないものでしょうか?

今は "アイウエオ....アイウエオ(半角)...ン(半角) "という
文字列を容易して、1文字ずつループさせて調べているのですが

こんな方法があるよ。という方法があれば是非教えていただければ
うれしいです。

編集 削除
魔界の仮面弁士  2004-12-22 12:43:32  No: 118464  IP: [192.*.*.*]

Like演算子を利用されては如何でしょう。

編集 削除
いな  2004-12-22 12:56:26  No: 118465  IP: [192.*.*.*]

自分はこうやっちゃうなぁ〜
--
'全角カナのチェックを行います
Public Function IsKataKana(ByVal strChk As String) As Boolean
    Dim ret As Boolean
    Dim strPatern As String
    Dim lngLoop As Long
        
    If IsNull(strChk) Then
        IsKataKana = True
        Exit Function
    End If
    
    strPatern = "[アイウエオカキクケコサシスセソタチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワヲンガギグゲゴザジズゼゾダヂヅデドバビブベボパピプペポァィゥェォッャュョヮーヱヰ]"
    
    For lngLoop = 1 To Len(strChk)
        ret = Mid(strChk, lngLoop, 1) Like strPatern
        
        If ret = False Then
            Exit For
        End If
        
    Next

編集 削除
花ちゃん  2004-12-22 13:13:37  No: 118466  IP: [192.*.*.*]

VB6.0 なら下記ではどうでしょうか?

'Microsoft VBScript Regular Expressions 5.5 を参照設定して下さい
Private Sub Text1_Change()
    Dim Reg As New RegExp
    Reg.Pattern = "[\uFF61-\uFF9F]"
    If Reg.Test(StrConv(Text1.Text, vbNarrow)) Then
        MsgBox "カタカナが混じっています"
    End If
End Sub

編集 削除
かな  2004-12-22 14:51:33  No: 118467  IP: [192.*.*.*]

If StrConv(Text1.Text, vbWide) <> StrConv(StrConv(Text1.Text, vbWide), vbHiragana) Then
        MsgBox "カタカナあります"
    End If

花ちゃんさんの案を参考に、StrConvだけで。どうでしょう?

編集 削除