Метод split
Метод split класса slice возвращает
итератор, который разбивает срез на части
по заданному разделителю. Разделителем может
быть значение, для которого элемент среза
удовлетворяет сравнению, или замыкание-предикат.
Метод возвращает итератор Split, элементы
которого имеют тип &[T].
Параметром метод принимает разделитель:
это может быть ссылка на значение, с которым
сравнивается каждый элемент среза, либо
замыкание, принимающее ссылку на элемент
и возвращающее bool.
Синтаксис
slice.split(&value)
slice.split(|element| condition)
Пример
Давайте разобьем срез [1, 2, 3, 0, 4, 5]
по разделителю 0 и выведем полученные части:
fn main()
{
let arr = [1, 2, 3, 0, 4, 5];
let res: Vec<&[i32]> = arr.split(&0).collect();
println!("{:?}", res);
}
Результат выполнения кода:
[[1, 2, 3], [4, 5]]
Пример
Давайте разобьем срез ["a", "b", "c", "d", "e"]
по разделителю "c":
fn main()
{
let arr = ["a", "b", "c", "d", "e"];
let res: Vec<&[&str]> = arr.split(&"c").collect();
println!("{:?}", res);
}
Результат выполнения кода:
[["a", "b"], ["d", "e"]]
Пример
Давайте разобьем срез [1, 2, 3, 4, 5, 6]
по предикату: элемент является четным числом:
fn main()
{
let arr = [1, 2, 3, 4, 5, 6];
let res: Vec<&[i32]> = arr.split(|x| x % 2 == 0).collect();
println!("{:?}", res);
}
Результат выполнения кода:
[[1], [3], [5], []]
Смотрите также
-
метод
split_at,
который делит срез на две части по индексу -
метод
split_first,
который отделяет первый элемент среза от остатка -
метод
rsplit,
который разбивает срез справа налево -
метод
chunks,
который разбивает срез на куски фиксированной длины