メモ

主にプログラミング系の備忘録

雑なNFD⇒NFC変換

濁点と半濁点に対応しただけだけど…。

Public Function 濁点半濁点統合(buf As String) As String
  Dim buf2 As String '返り値格納

  buf2 = "" '返り値の初期化
  
  For i = 1 To Len(buf)
    If AscW(Mid(buf, i, 1)) = 12441 Then '濁点
      buf2 = Left(buf2, Len(buf2) - 1) & ChrW(AscW(Mid(buf, i - 1, 1)) + 1)
    ElseIf AscW(Mid(buf, i, 1)) = 12442 Then '半濁点
      buf2 = Left(buf2, Len(buf2) - 1) & ChrW(AscW(Mid(buf, i - 1, 1)) + 2)
    Else
      buf2 = buf2 & Mid(buf, i, 1)
    End If
  Next i
  濁点半濁点統合 = buf2

End Function