web-dev-qa-db-ja.com

文字列を文字ごとにどのように反復しますか

文字列があり、「foo」が出現するたびにスキャンし、2番目の_"_まで、それに続くすべてのテキストを読み取る必要があります。 Rustには文字列用のcontains関数がないため、文字をスキャンして反復する必要があります。どうすればいいですか?

Edit:Rustの_&str_には contains()find() メソッド。

48
user2171584

文字をスキャンして繰り返し処理する必要があります。

.chars() method は、文字列内の文字の反復子を返します。例えば.

_for c in my_str.chars() { 
    // do something with `c`
}

for (i, c) in my_str.chars().enumerate() {
    // do something with character `c` and index `i`
}
_

各文字のバイトオフセットに関心がある場合は、 _char_indices_ を使用できます。

.peekable()を調べ、peek()を使用して先読みします。文字の単純なベクトルではなくUTF-8コードポイントをサポートするため、このようにラップされます。

charsのベクトルを作成してそこから作業することもできますが、それはより多くの時間とスペースを必要とします。

_let my_chars: Vec<_> = mystr.chars().collect();
_
79
centaurian_slug