Spec-Zone.ru › Dart 2

dart:core

абстрактный метод replaceAllMapped

String replaceAllMapped(
  1. Pattern from,
  2. String replace(
    1. Match match
    )
)

Заменяет все подстроки, соответствующие from, вычисляемой строкой.

Создает новую строку, в которой непересекающиеся подстроки, соответствующие from (те, по которым выполняется итерация с помощью from.allMatches(thisString)), заменяются результатом вызова replace для соответствующего объекта Match.

Это позволяет заменять совпадения новым содержимым, зависящим от совпадения, в отличие от replaceAll, где строка замены всегда одинакова.

Функция replace вызывается с объектом Match, созданным шаблоном, а ее результат используется в качестве замены.

Функция, определенная ниже, преобразует каждое слово в строке в упрощенную «поросячью латынь» с помощью replaceAllMapped:

String pigLatin(String words) => words.replaceAllMapped(
    RegExp(r'\b(\w*?)([aeiou]\w*)', caseSensitive: false),
    (Match m) => "${m[2]}${m[1]}${m[1]!.isEmpty ? 'way' : 'ay'}");

final result = pigLatin('I have a secret now!');
print(result); // 'Iway avehay away ecretsay ownay!'

Реализация

String replaceAllMapped(Pattern from, String Function(Match match) replace);

© 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/replaceAllMapped.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API