rustで和暦を西暦に変換する

rust

rustで、正規表現とUnicode正規化を使って和暦を西暦にサクッと変換するソースコード。

use regex::Regex;
use unicode_normalization::UnicodeNormalization;
fn main(){
 let r = Regex::new(r"(?P<nengo>昭和|平成|令和)(?P<nen>[0-9]+|[0-9]+|元)年").unwrap();
 let wareki = "令和5年";
 let cap = r.captures(wareki).unwrap();
 let nengo = cap.name("nengo").unwrap().as_str();
 let toshi = cap.name("nen").unwrap().as_str();
 let nen = if toshi=="元" {
     1
 }else{
     toshi.nfkc().to_string().parse::<u32>().unwrap()
 };
 let seireki = match nengo{
     "昭和" => nen + 1925,
     "平成" => nen + 1988,
     "令和" => nen + 2018,
     _=>0
 };
println!("{}{}年、西暦:{}年",nengo,nen,seireki);
}

なんかもうちょっとスマートにできそうだけど

ひとまずこんな感じかな。

julia版はこちら

コメント

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