Метод splitMapJoin
Метод splitMapJoin разбивает строку по заданному шаблону,
преобразует совпадения и промежутки между ними с помощью функций,
а затем объединяет результаты в новую строку. Первым параметром
метод принимает шаблон, по которому выполняется разбиение.
Вторым параметром можно передать функцию для преобразования
совпадений, третьим - функцию для преобразования промежутков
между совпадениями. Сама исходная строка при этом не изменяется.
Синтаксис
str.splitMapJoin(pattern, {onMatch, onNonMatch})
Пример
Давайте разобьем строку по цифрам и преобразуем совпадения в квадратные скобки, а промежутки оставим без изменений:
void main()
{
String str = 'abcde12345';
String res = str.splitMapJoin(
RegExp(r'\d+'),
onMatch: (m) => '[${m.group(0)}]',
onNonMatch: (s) => s
);
print(res);
}
Результат выполнения кода:
"abcde[12345]"
Пример
Давайте преобразуем и совпадения, и промежутки между ними:
void main()
{
String str = '12345abcde';
String res = str.splitMapJoin(
RegExp(r'\d+'),
onMatch: (m) => '(${m.group(0)})',
onNonMatch: (s) => '<$s>'
);
print(res);
}
Результат выполнения кода:
"(12345)<abcde>"
Пример
Давайте используем только функцию для совпадений, а промежутки оставим как есть:
void main()
{
String str = 'abcde12345abcde';
String res = str.splitMapJoin(
RegExp(r'\d+'),
onMatch: (m) => '!'
);
print(res);
}
Результат выполнения кода:
"abcde!abcde"
Смотрите также
-
метод
split,
который разбивает строку на список подстрок -
метод
replaceAll,
который заменяет все вхождения подстроки -
метод
replaceAllMapped,
который заменяет вхождения с помощью функции -
метод
allMatches,
который возвращает все совпадения шаблона