replaceAllMapped 抽象方法

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

用计算得到的字符串替换所有与 from 匹配的子字符串。

创建一个新字符串,在这个新字符串中,所有与 from 匹配的非重叠子字符串(通过 from.allMatches(thisString) 迭代得到的)被调用 replace 方法在相应的 Match 对象上的结果所替换。

这可以用来替换匹配项,新的内容取决于匹配的内容,而不同于 replaceAll,在replaceAll中替换字符串总是相同的。

replace 函数使用由模式生成的 Match 对象调用,并且其结果作为替换内容。

以下函数定义通过使用 replaceAllMapped 将字符串中的每个单词转换为简化版的 'pig latin'

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);