前回作った関数だったら、半角数字の「平成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
コメント