replaceAllMapped 抽象方法
用计算得到的字符串替换所有与 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);