漢数字(日付)を数値として認識してみる

一昨日、8桁の数値を日付データへ変換してみた。
infoment.hatenablog.com

色々やるうちに、漢字の日付も変換したくなった。
そこで今日は、日付の関数時を数値として認識することに挑戦する。
f:id:Infoment:20190702233339p:plain

万・億・兆と大きな桁になると話は別だが、日付に登場する一~三十一までを変換するならば、さほど難しくない。

今回の作戦は、↓ こうだ。

  1. 漢数字を単純に、数字に置き換える。
  2. 文字数から判断して、「十」を「10」として扱う。
Function ChineseToArabicNumerals(str As String) As Long
    Dim Sorce As String
        Sorce = "一二三四五六七八九〇"
    Dim Destination As String
        Destination = "1234567890"
    
    ' まず単純に置換する。
    Dim i As Long
        For i = 1 To 10
            str = Replace(str, _
                        Mid(Sorce, i, 1), _
                        Mid(Destination, i, 1))
        Next
    
    ' 文字数から判別して、「十」を「10」に置き換える。
    Select Case Len(str)
        Case 1
            If str = "十" Then str = 10
        Case 2
            If Right(str, 1) = "十" Then
                str = Left(str, 1) * 10
            Else
                str = 10 + Right(str, 1)
            End If
        Case 3
            str = Left(str, 1) * 10 + Right(str, 1)
    End Select
    ChineseToArabicNumerals = str
End Function

試しに、一~三十一が上手く変換されるか確認してみた。
f:id:Infoment:20190702233958p:plain

どうやら、上手くいったようだ。
と、ここで時間切れ。明日は、「二〇一九年七月三日」を「2019/7/3」へ変換することに挑戦です。

参考まで。