ひらがな判定及びひらがな抽出
プログラムソースメモです。
IsNumericやIsErrorの様な文字列の判定関数が無いものかと探したのですがなかった為、自分でコードを書きました。
'''
''' ひらがな検索
'''
''' 検索元ひらがな
''' ひらがな部分
'''
'''
Public Function IsHiragana(ByVal Value As String, Optional ByRef Kana As String = Nothing) As Boolean
Dim Count As Integer = Value.Length
If Count = 0 Then Return False
Dim m As System.Text.RegularExpressions.MatchCollection = System.Text.RegularExpressions.Regex.Matches(Value, "[\p{IsCJKUnifiedIdeographs}" & "\p{IsCJKCompatibilityIdeographs}" & "\p{IsCJKUnifiedIdeographsExtensionA}]|" & "[\uD840-\uD869][\uDC00-\uDFFF]|\uD869[\uDC00-\uDEDF]")
If Count = m.Count Then Return False
'ひらがな部分の抜出
Dim Hira As String = Value
For i As Integer = 0 To m.Count - 1
Hira = Hira.Replace(m(i).Value, "")
Next
If Hira.IndexOf("々") <> -1 Then
Hira = Hira.Replace("々", "")
End If
Kana = Hira
If Kana.Length > 0 Then
Return True
Else
Return False
End If
End Function
ひらがなの有無を調べて、ひらがながある場合は引数に代入する仕組みです。
上の正規表現だと「等々」「続々」などはひらがなありと判定してしまう為、べっと「々」の有無判定を実施して精度を上げています。
漢字のみ抜き出してほしい場合は、戻ってきた対象文字列から戻ってきた引数を削除してやることで対応可能です。
例
Value.Replace(kana,"")