第1章の08から09まで(言語処理100本ノック2020)
Rustで言語処理100本ノックのリファクタリングの続き。
前回はこちら。
とっくに終わってたのに、ブログ書いてなかった。。。
08. 暗号文 pub fn cipher(text: &str) -> String { return String::from_iter(text.chars().map(|x| { if x.is_ascii_alphanumeric() && x.is_lowercase() { let mut b = [0; 4]; x.encode_utf8(&mut b); b[0] = 219 - b[0]; char::from(b[0]) } else { x } })); } Rustの文字列はUTF-8でエンコードされたテキストを保持しているので、文字コード自体は意識していないです。 chars()でUnicodeスカラー値のイテレータが返ってくるので、1文字ずつ扱えるようになります。