Rust 文字列を指定した区切り文字で区切って逆順にする
Rustで、文字列を指定した区切り文字で区切って逆順にするサンプルコードを記述してます。Rustのバージョンは1.62.1を使用してます。
環境
- OS windows11 home
- rustc 1.62.1
文字列を指定した区切り文字で区切って逆順にする
文字列を指定した区切り文字で区切って逆順にするには「rsplit(”).collect::>()」を使用します。
"文字列".rsplit('区切り文字').collect::<Vec<_>>();
実際に使用してみます。
fn main() {
let mut str: String = "a-b-c".to_string();
println!( "{:?}", str.rsplit('-').collect::<Vec<_>>()); // ["c", "b", "a"]
println!( "{}", str ); // a-b-c
str = "aaaabaca".to_string();
println!( "{:?}", str.rsplit('a').collect::<Vec<_>>()); // ["", "c", "b", "", "", "", ""]
println!( "{}", str ); // aaaabaca
}
実行結果を見ると、区切られて逆順になっていることが確認できます。
文字列の最後に区切り文字があり、空の値にしたくない場合は「rsplit_terminator」を使用します。
fn main() {
let mut str: String = "a-b-c-".to_string();
println!( "{:?}", str.rsplit('-').collect::<Vec<_>>()); // ["", "c", "b", "a"]
println!( "{}", str ); // a-b-c-
println!( "{:?}", str.rsplit_terminator("-").collect::<Vec<_>>()); // ["c", "b", "a"]
println!( "{}", str ); // a-b-c-
}
存在しない区切り文字を指定
存在しない区切り文字を指定すると、1つのベクタが生成されます。
fn main() {
let mut str: String = "a-b-c".to_string();
println!( "{:?}", str.rsplit('A').collect::<Vec<_>>()); // ["a-b-c"]
println!( "{}", str ); // a-b-c
}
空文字
空文字の場合は、空のベクタが生成されます。
fn main() {
let mut str: String = "".to_string();
println!( "{:?}", str.rsplit('A').collect::<Vec<_>>()); // [""]
println!( "{}", str ); // a-b-c
}
日本語の場合
日本語の場合も動作します。
fn main() {
let mut str: String = "あかいうかえ".to_string();
println!( "{:?}", str.rsplit('か').collect::<Vec<_>>()); // ["え", "いう", "あ"]
println!( "{}", str ); // あかいうかえ
}
サロゲートペアの場合
サロゲートペアの場合も、期待する動作になります。
fn main() {
let mut str: String = "😇😶😻😇😶😻😇😶😻".to_string();
println!( "{:?}", str.rsplit('😶').collect::<Vec<_>>()); // ["😻", "😻😇", "😻😇", "😇"]
println!( "{}", str ); // 😇😶😻😇😶😻😇😶😻
}
-
前の記事
SolidJS Tailwind CSSを使用する 2022.08.06
-
次の記事
Linux lsコマンドの結果を縦に表示する 2022.08.06
コメントを書く