漢字をひらがなに(漢字の読み部分の抽出)
まず、一文を平仮名に直すだけでよければ
'''
''' 文書を平仮名変換
'''
''' 変換元文字列
'''
'''
Function toHiragana(Value As String) As String
Dim objExcel As New Microsoft.Office.Interop.Excel.Application
Dim stKanji As String = Value
Dim stKana As String = objExcel.GetPhonetic(stKanji)
Dim StHira As String = StrConv(stKana, VbStrConv.Hiragana)
objExcel = Nothing
Return StHira
End Function
こんな所でしょうか。
「ひらがな判定及びひらがな抽出」関連です。元は文書の一文のルビ振り用に考えたコードです。
「ひらがな判定及びひらがな抽出」を組み合わせて使用しています。
'''
''' ルビの検索
'''
''' 漢字
'''
'''
Public Function IsRubi(ByVal Value As String) As String
Dim stHira As String = toHiragana(Value)
Dim stKanji As String = Value
Dim stKana As String = ""
Back:
If IsHiragana(stKanji, stKana) Then
Dim BeFor As Boolean = IsHiragana(stKanji.Substring(0, 1))
Dim After As Boolean = IsHiragana(stKanji.Substring(stKanji.Length - 1))
If BeFor And After = False Then
stHira = stHira.Substring(stKana.Length)
ElseIf BeFor = False And After Then
stHira = stHira.Substring(0, stHira.Length - stKana.Length)
Else
stHira = stHira.Substring(1, stHira.Length - 2)
stKana = stKana.Substring(1, stKana.Length - 2)
stKanji = stKanji.Substring(1, stKanji.Length - 2)
GoTo Back
End If
End If
Return stHira
End Function
一応、これでOKではあるのですが、問題点として引数に引き渡した文字列の中で複数の漢字が存在する場合、
例
人の⇒ひと
人の流れ⇒ひとのな
の流れ=なが
人の流⇒(何も返さない)
と言う出力結果となります。
Ifによる判定文中に
ElseIf BeFor = False And After = False Then
を入れると
人の流⇒ひとのりゅう
となります。
「ひとりゅう」と言う結果を返すように作る事は可能ですが、返ってきた結果はエラーなのであまり意味がないかなぁと。
一応、行頭又は行末に漢字及び中に漢字と言う前提での想定となります。