абстрактный метод 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.19.6/dart-core/String/splitMapJoin.html