ひらがな判定及びひらがな抽出

プログラムソースメモです。

IsNumericやIsErrorの様な文字列の判定関数が無いものかと探したのですがなかった為、自分でコードを書きました。


'''


''' ひらがな検索
'''

''' 検索元ひらがな
''' ひらがな部分
''' True:ひらがなあり False:ひらがな無し
'''
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,"")