Подтвердить что ты не робот

Как вы перебираете строку по символу

У меня есть строка, и мне нужно отсканировать каждое вхождение "foo" и прочитать весь текст, следующий за ним, до второго ". Так как Rust не имеет функции contains для строк, мне нужно итерации с помощью сканирования символов. Как мне это сделать?

Изменить: Rust &str имеет contains() и find().

4b9b3361

Ответ 1

Мне нужно выполнить итерацию с помощью сканирования символов.

Метод .chars() возвращает итератор поверх символов в строке. например

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, вы можете использовать char_indices.

Посмотрите .peekable() и используйте peek() для поиска вперед. Он обернут таким образом, потому что он поддерживает кодовые точки UTF-8 вместо простого символа символов.

Вы также можете создать вектор char и работать с ним оттуда, но это больше времени и пространства:

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