Rust 後方から文字列を指定した回数で区切り文字で区切って分割する

Rustで、後方から文字列を指定した回数で区切り文字で区切って分割するサンプルコードを記述してます。Rustのバージョンは1.66.0を使用してます。
環境
- OS windows11 home
- rustc 1.66.0
後方から文字列を指定した回数で区切り文字で区切って分割する
文字列を指定した回数で区切り文字で区切って分割するには「rsplitn().collect::<Vec<_>>()」を使用します。
"文字列".rsplitn( 回数, "区切り文字" ).collect::<Vec<_>>()
実際に使用してみます。
fn main() {
let str: String = "a-b-c".to_string();
println!( "{:?}", str.rsplitn( 1, "-" ).collect::<Vec<_>>()); // ["a-b-c"]
println!( "{}", str ); // a-b-c
println!( "{:?}", str.rsplitn( 2, "-" ).collect::<Vec<_>>()); // ["c", "a-b"]
println!( "{}", str ); // a-b-c
println!( "{:?}", str.rsplitn( 3, "-" ).collect::<Vec<_>>()); // ["c", "b", "a"]
println!( "{}", str ); // a-b-c
}
実行結果を見ると、後方から指定した回数で分割されていることが確認できます。

区切り文字の最大値を超えた場合は、全て最大値と同じになります。
fn main() {
let str: String = "a-b-c".to_string();
println!( "{:?}", str.rsplitn( 4, "-" ).collect::<Vec<_>>()); // ["c", "b", "a"]
println!( "{}", str ); // a-b-c
println!( "{:?}", str.rsplitn( 5, "-" ).collect::<Vec<_>>()); // ["c", "b", "a"]
println!( "{}", str ); // a-b-c
}
存在しない区切り文字を指定
存在しない区切り文字を指定すると、1つのベクタが生成されます。
fn main() {
let str: String = "a-b-c".to_string();
println!( "{:?}", str.rsplitn( 1, "," ).collect::<Vec<_>>()); // ["a-b-c"]
println!( "{}", str ); // a-b-c
println!( "{:?}", str.rsplitn( 2, "," ).collect::<Vec<_>>()); // ["a-b-c"]
println!( "{}", str ); // a-b-c
}
空文字
空文字の場合は、空のベクタが生成されます。
fn main() {
let str: String = "".to_string();
println!( "{:?}", str.rsplitn( 1, "," ).collect::<Vec<_>>()); // [""]
println!( "{}", str ); //
println!( "{:?}", str.rsplitn( 2, "," ).collect::<Vec<_>>()); // [""]
println!( "{}", str ); //
}
区切り文字に空文字を指定すると、一文字ずつ区切られていきます。
fn main() {
let str: String = "a-b-c".to_string();
println!( "{:?}", str.rsplitn( 1, "" ).collect::<Vec<_>>()); // ["a-b-c"]
println!( "{}", str ); // a-b-c
println!( "{:?}", str.rsplitn( 2, "" ).collect::<Vec<_>>()); // ["", "a-b-c"]
println!( "{}", str ); // a-b-c
println!( "{:?}", str.rsplitn( 3, "" ).collect::<Vec<_>>()); // ["", "c", "a-b-"]
println!( "{}", str ); // a-b-c
println!( "{:?}", str.rsplitn( 4, "" ).collect::<Vec<_>>()); // ["", "c", "-", "a-b"]
println!( "{}", str ); // a-b-c
}
-
前の記事
GAS googleドライブ内のファイルの最終更新日を取得する 2023.07.05
-
次の記事
ruby 文字列のバイト長を取得する 2023.07.05
コメントを書く