Rust 文字列の長さ・分割・切り出し
概要
- 文字列の操作方法を紹介する。
文字列の長さを求める
- 文字列のまま操作する場合は chars().count()
- 文字配列について操作する場合は len()
fn main() { let 文字列 = "あいうえおかきくけこさしすせそ"; println!("{}", 文字列.chars().count()); let 文字配列: Vec<char> = 文字列.chars().collect(); println!("{}", 文字配列.len()); }
文字列を指定文字で分割する
- つまり「aaa@bbb」を「@」で分割して「aaa」と「bbb」を得る操作。
- 配列を得る場合には、すこし記述が長くなる。
fn main() { let 文字列 = "あいうえおかき-くけこさしすせそ"; // 配列にする必要がある場合 let 配列 = 文字列.split('-').fold(Vec::new(), |mut s, i| { s.push(i.to_string()); s }); println!("{:?}", 配列); // 配列にする必要がない場合 for 分割 in 文字列.split('-') { println!("{}", 分割); } }
文字列を切り出す
- 「アイウエオ」の1~3を切り出すと「イウエ」
- 短く表現したが、結構複雑なので関数にまとめた。
fn main() { let 文字列 = "あいうえおかきくけこさしすせそ"; println!("{}", 切り出し(&文字列, 3, 5)); } fn 切り出し(文字列: &str, 開始: usize, 終了: usize) -> String { let mut s = String::new(); for i in 文字列.chars().enumerate() { match i.0 { n if n < 開始 => {continue} n if n > 終了 => {break} _ => {s.push(i.1)} } } s }
補足
- 1文字が1バイトだったり4バイトだったりするので、単純な操作もけっこう面倒である。