web-dev-qa-db-fra.com

Comment répéter une chaîne par caractère

J'ai une chaîne et je dois scanner chaque occurrence de "foo" et lire tout le texte qui le suit jusqu'à une seconde "Puisque Rust n'a pas de fonction contains pour les chaînes, J'ai besoin d'itérer des caractères pour le rechercher. Comment pourrais-je faire ça?

Edit : &str De Rust a contains() et find() méthode.

48
user2171584

J'ai besoin d'itérer des caractères pour le rechercher.

La méthode .chars() renvoie un itérateur sur les caractères d'une chaîne. par exemple.

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`
}

Si vous êtes intéressé par les décalages d'octets de chaque caractère, vous pouvez utiliser char_indices .

Examinez .peekable() et utilisez peek() pour regarder vers l'avenir. Il est enveloppé comme ceci car il prend en charge les points de code UTF-8 au lieu d'être un simple vecteur de caractères.

Vous pouvez également créer un vecteur de chars et y travailler à partir de là, mais cela demande plus de temps et d'espace:

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