Quick actions

cmd+k|ctrl+k

Navigation

Languages

japanese to kanji Converter

Snippet info

Language

Rust

Visibility

public

Author

tete

Created

2022-09-22T21:29:20.529439Z

Updated

2022-09-22T22:04:48.953021Z

// https://twitter.com/japanill/status/821609716359004160?s=21&t=QfcJMzPVPw0Jo9QLrBwd_Q
use std::env;
use std::io;
const H:&str = "あいうえおかきくけこさしすせそたちつてとなにぬねのはひふへほまみむめもやゆよらりるれろわゐうゑをんがぎぐげござじずぜぞだぢづでどばびぶべぼぱぴぷぺぽぁぃぅぇぉゃゅょ";
const K:&str = "亜慰宇餌悪華鬼苦怪狐沙死酢勢訴駄血律帝斗那尼奴根乃覇卑父屁帆魔魅夢女喪夜遊世羅璃流零露我忌宇壊魚云蛾戯愚外誤座痔頭是憎墮痔尽泥怒婆微撫塀墓波碑腐餅歩挙忌討會押殺友酊";

fn converter(h: &Vec<char>, k: &Vec<char>, c: char) -> char {
    if let Some(i) = h.iter().position(|&x| x == c) {
        k[i]
    } else {
        c
    }
}

fn transrater(h: &Vec<char>, k: &Vec<char>, cs: String) -> String {
    let mut ret = String::new();
    for c in cs.chars() {
        ret.push(converter(h, k, c));
    }
    ret
}

fn main() {
    let h: Vec<char> = H.chars().collect();
    let k: Vec<char> = K.chars().collect();
    let args: Vec<String> = env::args().collect();
    
    let mut line = String::new();
    io::stdin().read_line(&mut line)
        .expect("入力エラー。read_line()で失敗しました。");
    let ret = transrater(&h,&k,line);
    println!("{}", ret);
    
}
INFO