【Dart 教程系列第 41 篇】Dart 之 replaceAll,replaceFirst,replaceRange,replaceAllMapped 字符

500 阅读3分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

这是【Dart 教程系列第 41 篇】,如果觉得有用的话,欢迎关注专栏。

replaceAll

源码如下所示

String replaceAll(Pattern from, String replace);

语法

替换掉字符串中全部符合条件的字符。如果没有符合条件的,则返回原字符串。

第一个参数 from 表示字符串中被替换掉的字符,第二个参数 replace 表示替换为什么字符。

举例

String text = "abcdabcd";
print(text.replaceAll("ab", "xy")); // 返回 xycdxycd

replaceFirst

源码如下所示

String replaceFirst(Pattern from, String to, [int startIndex = 0]);

语法

只替换掉第一个符合条件的字符。

第一个参数 from 表示字符串中被替换掉的字符,第二个参数 to 表示替换为什么字符,第三个参数为可选参数,表示从哪个索引位置开始替换,默认为 0 。

举例

String text = "abcdabcd";

// 01 只替换掉第一个符合条件的字符
print(text.replaceFirst("ab", "xy")); // 返回 xycdabcd

// 02 从索引 1 位置后面开始,替换掉第一个符合条件的字符
print(text.replaceFirst("ab", "xy", 1)); // 返回 abcdxycd

replaceRange

源码如下所示

String replaceRange(int start, int? end, String replacement);

语法

替换掉指定范围内的字符。有效取值范围是 0 <= start <= end <= 字符串.length

第一个参数 start 表示从哪个索引位置开始替换,包括该索引。

第二个参数 end 表示从哪个索引位置结束替换,不包括该索引。因为 end 为可空参数,当 end 为 null 时,表示到字符串末尾。

第三个参数 replacement 表示替换为什么字符。

举例

String text = "abcdabcd";

// 01 从索引 0 位置开始,到索引 3 位置结束(但不包括该索引),中间的字符被替换为 m
print(text.replaceRange(0, 3, "m")); // 返回 mdabcd

// 02 从索引 0 位置开始到末尾,中间的字符被替换为 m
print(text.replaceRange(0, null, "m")); // 返回 m

replaceAllMapped

源码如下所示

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

语法

替换掉所有符合条件的字符。用方法的返回值替换指定的字符,如果没有匹配的字符,则返回原字符串。

第一个参数 from 表示字符串中被替换掉的字符,

第二个参数 replace 表示如果有匹配的字符,则用指定的字符作为返回值替,换掉字符串中符合条件的字符。最终的效果其实和方法 replaceAll 是一样的。

举例

String text = "abcdabcd";

// 用 xy 替换掉字符串中的 ab
String str = text.replaceAllMapped("ab", (Match match) => "xy");
print(str); // 返回 xycdxycd

replaceFirstMapped

源码如下所示

String replaceFirstMapped(Pattern from, String replace(Match match), [int startIndex = 0]);

语法

只替换掉第一个符合条件的字符。用方法的返回值替换指定的字符,如果没有匹配的字符,则返回原字符串。

第一个参数 from 表示字符串中被替换掉的字符,

第二个参数 replace 表示如果有匹配的字符,则用指定的字符作为返回值,替换掉字符串中第一个符合条件的字符。最终的效果其实和方法 replaceFirst 是一样的。

第三个参数 startIndex 为可选参数,表示从哪个索引位置开始替换,默认为 0,不能大于字符串的长度。

举例

String text = "abcdabcd";

// 01 用 xy 替换掉字符串中第一个符合条件的 ab
String str1 = text.replaceFirstMapped("ab", (Match match) => "xy");
print(str1); // 返回 xycdabcd

// 02 从索引 1 位置处开始,用 xy 替换掉字符串中第一个符合条件的 ab
String str2 = text.replaceFirstMapped("ab", (Match match) => "xy", 1);
print(str2); // 返回 abcdxycd

更多 Dart 的 String 字符串方法,推荐一篇博客 Dart 的 String 字符串的常用方法

你的问题得到解决了吗?欢迎在评论区留言。

赠人玫瑰,手有余香,如果觉得文章不错,希望可以给个一键三连,感谢。


结束语

技术是一点一点积累的,大神也不是一天就可以达到的。原地不动就是退步,所以每天进步一点点。

最后,附上一句格言:"好学若饥,谦卑若愚",望共勉。