Метод splitMapJoin
Разделяет строку, преобразует её части и объединяет их в новую строку.
Для разделения строки на части используется pattern. Совпадения, определённые Pattern.allMatches для pattern в этой строке, используются как совпадения, а подстроки между концом одного совпадения (или началом строки) и началом следующего совпадения (или концом строки) рассматриваются как несовпадающие части. (Нет пропуска начальных или конечных пустых совпадений, как в split, все совпадения и части между ними включены.)
Каждое совпадение преобразуется в строку, вызывая onMatch. Если onMatch опущено, используется совпавшая подстрока.
Каждая несовпадающая часть преобразуется в строку вызовом onNonMatch. Если onNonMatch опущено, используется сама несовпадающая подстрока.
Затем все преобразованные части конкатенируются в результирующую строку.
final result = 'Eats shoots leaves'.splitMapJoin(RegExp(r'shoots'),
onMatch: (m) => '${m[0]}', // (or no onMatch at all)
onNonMatch: (n) => '*');
print(result); // *shoots*
Реализация
String splitMapJoin(Pattern pattern,
{String Function(Match)? onMatch, String Function(String)? onNonMatch});
© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.18.5/dart-core/String/splitMapJoin.html