juliaで和暦を西暦にする全角数字対応版

julia

前回作った関数だったら、半角数字の「平成10年」はできても全角数字の「平成10年」は変換できないのでそこら辺を修正

Unicode正規化でやっつける。

function warekiparse(wareki)
    r=r"(?<nengo>昭和|平成|令和)(?<nen>[0-9]+|[0-9]+|元)年"
    wareki_dic =Dict("昭和"=>1926,"平成"=>1989,"令和"=>2019)
    m=match(r,wareki)
    if m === nothing
        return println("no")
    end
    if m[:nen]=="元"
        wareki_dic[m[:nengo]]
    else
        wareki_dic[m[:nengo]]+parse(Int,Base.Unicode.normalize(m[:nen],:NFKC))-1
    end
end

変更箇所は、正規表現で全角の部分も追加

変更前:r=r"(?<nengo>昭和|平成|令和)(?<nen>[0-9]+|元)年"
変更後:r=r"(?<nengo>昭和|平成|令和)(?<nen>[0-9]+|[0-9]+|元)年"

parseするときにUnicode正規化をやってから、parseする

変更前:wareki_dic[m[:nengo]]+parse(Int,m[:nen])-1
変更後:wareki_dic[m[:nengo]]+parse(Int,Base.Unicode.normalize(m[:nen],:NFKC))-1

コメント

タイトルとURLをコピーしました