Метод match_indices
Метод match_indices ищет все вхождения подстроки
в строке и возвращает итератор, каждый элемент которого
представляет собой кортеж из индекса и найденной подстроки.
Параметром метод принимает подстроку или символ, который
нужно найти.
В отличие от метода matches, который возвращает
только найденные подстроки, match_indices
дополнительно сообщает позицию каждого вхождения.
Индексы указывают на байтовую позицию начала вхождения
в исходной строке.
Синтаксис
str.match_indices(pat)
Пример
Давайте найдём все вхождения подстроки "ab"
в строке "abcdeabcde":
fn main()
{
let res: Vec<_> = "abcdeabcde".match_indices("ab").collect();
println!("{:?}", res);
}
Результат выполнения кода:
[(0, "ab"), (5, "ab")]
Пример
Давайте переберём все вхождения подстроки "cd"
в строке "abcdcd" и выведем индекс и найденную
подстроку по отдельности:
fn main()
{
for (index, matched) in "abcdcd".match_indices("cd")
{
println!("index: {}, match: {}", index, matched);
}
}
Результат выполнения кода:
index: 2, match: "cd"
index: 4, match: "cd"
Пример
Метод также работает с отдельными символами.
Давайте найдём все вхождения символа 'a'
в строке "banana":
fn main()
{
let res: Vec<_> = "banana".match_indices('a').collect();
println!("{:?}", res);
}
Результат выполнения кода:
[(1, "a"), (3, "a"), (5, "a")]
Смотрите также
-
метод
matches,
который возвращает итератор по всем вхождениям подстроки -
метод
rmatch_indices,
который возвращает вхождения подстроки с конца строки -
метод
find,
который возвращает позицию первого вхождения подстроки -
метод
rfind,
который возвращает позицию последнего вхождения подстроки