这是【Dart 教程系列第 37 篇】,如果觉得有用的话,欢迎关注专栏。
文章目录
substring
- substring
- split
- splitMapJoin
源码如下所示
String substring(int start, [int? end]);
语法
第一个参数 start 是开始分割字符串的索引,当只传了 start 参数时,表示从 start 索引处截取到字符串末尾。
第二个参数 end 是可选参数,表示结束分割字符串的索引,end 的值不能大于字符串的长度。
字符串截取的范围是 [start,end),也就是含头不含尾。
举例
String text = "aaabbbccc";
// 01 从索引 3 位置到末尾,分割字符串
print(text.substring(3)); // 返回 bbbccc
// 02 从索引 3 位置到索引 8 位置,分割字符串
print(text.substring(3, 8)); // 返回 bbbcc
split
源码如下所示
List split(Pattern pattern);
语法
以指定字符分割字符串,返回类型为 List
,被分割的字符不会添加到数组中。
如果指定的分割字符不在字符串中,则将整个字符串直接添加到数组中,作为新数组中的一个元素。
举例
// 01 以字符 % 分割字符串
String str1 = "a%b%c%d%e%f";
List l1 = str1.split('%');
print(l1); // 返回长度为 6 的字符串列表 [a, b, c, d, e, f]
// 02 以空格分割字符串
String str2 = "abcdef";
List l2 = str2.split('');
print(l2); // 返回长度为 6 的字符串列表 [a, b, c, d, e, f]
// 03 当指定的字符不在字符串中时
String str3 = "xyz";
List l3 = str3.split('+');
print(l3); // 返回 [xyz]
splitMapJoin
源码如下所示
String splitMapJoin(
Pattern pattern, {
String Function(Match)? onMatch,
String Function(String)? onNonMatch,
});
语法
这个方法比较特殊,可以在一条语句中完成 3 件事,虽然我平常用到的不多,但还是要知道这个方法的用途。
第一个参数可以是一个字符串 String 或一个正则 RegExp 对象。
第二个参数是可选参数,表示将每个和指定的分割字符匹配的,替换为自定义返回的字符串。
第三个参数也是可选参数,但和第二个参数刚好相反,表示将每个和指定的分割字符不匹配的,替换为自定义返回的字符串。
举例
String text = "a,b,c,d";
String val = text.splitMapJoin(
',', // 以逗号 , 为分割字符
onMatch: (Match match) => "y", // 将字符串中是逗号的替换为字符 y
onNonMatch: (String nonMatch) => "x", // 将字符串中不是逗号的替换为字符 x
);
print(val); // 返回 xyxyxyx
更多 Dart 的 String 字符串方法,推荐一篇博客 Dart 的 String 字符串的常用方法
你的问题得到解决了吗?欢迎在评论区留言。
赠人玫瑰,手有余香,如果觉得文章不错,希望可以给个一键三连,感谢。
结束语 技术是一点一点积累的,大神也不是一天就可以达到的。原地不动就是退步,所以每天进步一点点。 最后,附上一句格言:"好学若饥,谦卑若愚",望共勉。