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