РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
167 of 1245 menu

Метод char_indices

Метод char_indices возвращает итератор, который выдаёт пары значений: позицию символа в байтах и сам символ. Параметров метод не принимает. Это удобно, когда нужно обойти строку по символам и одновременно знать, где именно расположен каждый символ внутри строки.

Обратите внимание: индекс в методе char_indices измеряется в байтах, а не в символах. Для ASCII-строк эти значения совпадают, но для кириллицы или эмодзи один символ может занимать несколько байт.

Синтаксис

str.char_indices()

Пример

Давайте обойдём строку "abcde" и выведем каждую пару индекс-символ:

fn main() { let s = "abcde"; for (index, ch) in s.char_indices() { println!("{}: {}", index, ch); } }

Результат выполнения кода:

0: a 1: b 2: c 3: d 4: e

Пример

Давайте соберём все пары индекс-символ в вектор с помощью метода collect:

fn main() { let s = "abcde"; let res: Vec<(usize, char)> = s.char_indices().collect(); println!("{:?}", res); }

Результат выполнения кода:

[(0, 'a'), (1, 'b'), (2, 'c'), (3, 'd'), (4, 'e')]

Пример

Давайте посмотрим, как меняются индексы, когда строка содержит многобайтовые символы. Возьмём строку "абв", где каждая буква занимает два байта:

fn main() { let s = "абв"; for (index, ch) in s.char_indices() { println!("{}: {}", index, ch); } }

Результат выполнения кода:

0: а 2: б 4: в

Смотрите также

  • метод chars,
    который возвращает итератор только по символам строки
  • метод bytes,
    который возвращает итератор по байтам строки
  • метод match_indices,
    который возвращает позиции вхождений подстроки
  • метод len,
    который возвращает длину строки в байтах
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить