Rust 文字列から先頭から文字数を指定して文字を削除する

Rustで、文字列から先頭から文字数を指定して文字を削除するサンプルコードを記述してます。「split_off()」に削除する文字数を指定することで可能です。Rustのバージョンは1.66.0を使用してます。
環境
- OS windows11 home
- rustc 1.66.0
文字列から先頭から文字数を指定して文字を削除する
文字列から先頭から文字数を指定して文字を削除するには「split_off()」を使用します。
"文字列".split_off( 先頭から削除する文字数 );
実際に使用してみます。
fn main() {
let mut str: String = "abcde".to_string();
println!( "{}", str.split_off(1) ); // bcde
println!( "{}", str ); // a
str = "abcde".to_string();
println!( "{}", str.split_off(2) ); // cde
println!( "{}", str ); // ab
}
実行結果を見ると、指定文字数分だけ文字が削除されていることが確認できます。

fn main() {
let mut str: String = "abcde".to_string();
println!( "{}", str.split_off(0) ); // abcde
println!( "{}", str ); //
}
また、文字数以上を指定するとエラーとなります。
fn main() {
let mut str: String = "abcde".to_string();
println!( "{}", str.split_off(6) );
println!( "{}", str );
}
エラー全文
thread 'main' panicked at 'assertion failed: self.is_char_boundary(at)', /rustc/e092d0b6b43f2de967af0887873151bb1c0b18d3\library\alloc\src\string.rs:1677:9
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
error: process didn't exit successfully: `target\debug\rust_sample.exe` (exit code: 101)
日本語の場合
日本語の場合は、「3」単位で位置を指定します。
fn main() {
let mut str: String = "あいうえお".to_string();
println!( "{}", str.split_off(3) );
// いうえお
println!( "{}", str );
// あ
str = "あいうえお".to_string();
println!( "{}", str.split_off(6) );
// うえお
println!( "{}", str );
// あい
}
サロゲートペアの場合
サロゲートペアの場合は、「4」単位で位置を指定します。
fn main() {
let mut str: String = "😇😶😻".to_string();
println!( "{}", str.split_off(4) );
// 😶😻
println!( "{}", str );
// 😇
str = "😇😶😻".to_string();
println!( "{}", str.split_off(8) );
// 😻
println!( "{}", str );
// 😇😶
}
-
前の記事
Oracle Database テーブルの全データを結合する 2023.06.22
-
次の記事
kotlin 文字列の大きさを比較する 2023.06.26
コメントを書く