Rust 文字列から指定した文字列が後方から検索して最初に見つかった位置を取得する
Rustで、文字列から指定した文字列が後方から検索して最初に見つかった位置を取得するサンプルコードを記述してます。「rfind()」で可能です。Rustのバージョンは1.66.0を使用してます。
環境
- OS windows11 home
- rustc 1.66.0
文字列から指定した文字列が後方から検索して最初に見つかった位置を取得
文字列から指定した文字列が後方から検索して最初に見つかった位置を取得するには「rfind()」を使用します。
※位置は「0」から開始されます。
"文字列".rfind("文字列")
実際に使用してみます。
fn main() {
let mut str: String = "abcdeabc".to_string();
println!( "{:?}", str.rfind('a') ); // Some(5)
println!( "{:?}", str.rfind('b') ); // Some(6)
println!( "{:?}", str.rfind('c') ); // Some(7)
println!( "{:?}", str.rfind("cd") ); // Some(2)
println!( "{:?}", str.rfind("f") ); // None
}
実行結果を見ると、取得されていることが確認できます。
日本語
日本語の場合は、1文字が「3」とカウントされます。
fn main() {
let mut str: String = "あいうえおあいう".to_string();
println!( "{:?}", str.rfind('あ') ); // Some(15)
println!( "{:?}", str.rfind('い') ); // Some(18)
println!( "{:?}", str.rfind('う') ); // Some(21)
println!( "{:?}", str.rfind("うえ") ); // Some(6)
println!( "{:?}", str.rfind("か") ); // None
}
サロゲートペア
通常の2バイトで1文字で表すところを、4バイトで1文字となるサロゲートペア文字だと1文字が「4」とカウントされます。
fn main() {
let mut str: String = "😇😈😉😊😋😇😈😉".to_string();
println!( "{:?}", str.rfind('😇') ); // Some(20)
println!( "{:?}", str.rfind('😈') ); // Some(24)
println!( "{:?}", str.rfind('😉') ); // Some(28)
println!( "{:?}", str.rfind("😉😊") ); // Some(8)
println!( "{:?}", str.rfind("🙆") ); // None
}
空文字
空文字を検索すると、最後の文字の位置「+1」が返ります。
空文字から空文字を検索すると「0」が返ります。
fn main() {
let mut str: String = "abcde".to_string();
println!( "{:?}", str.find("") ); // Some(0)
str = "".to_string();
println!( "{:?}", str.find("") ); // Some(0)
}
-
前の記事
PyCharm クラスに移動するショートカットキー 2023.04.05
-
次の記事
MariaDB クエリのキャッシュをクリアする 2023.04.06
コメントを書く