代码先锋网 代码片段及技术文章聚合

【Dart 教程系列第 37 篇】Dart 之 substring,split,splitMapJoin 字符串的分割

技术标签: Dart  Dart的字符串分割  Dart之substring  Dart之split方法  Dart

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

substring

源码如下所示

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<String> split(Pattern pattern);

语法

以指定字符分割字符串,返回类型为 List<String> ,被分割的字符不会添加到数组中。

如果指定的分割字符不在字符串中,则将整个字符串直接添加到数组中,作为新数组中的一个元素。

举例

// 01 以字符 % 分割字符串
String str1 = "a%b%c%d%e%f";
List<String> l1 = str1.split('%');
print(l1); // 返回长度为 6 的字符串列表 [a, b, c, d, e, f]

// 02 以空格分割字符串
String str2 = "abcdef";
List<String> l2 = str2.split('');
print(l2); // 返回长度为 6 的字符串列表 [a, b, c, d, e, f]

// 03 当指定的字符不在字符串中时
String str3 = "xyz";
List<String> 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 字符串的常用方法

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

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


结束语

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

最后,附上一句格言:"好学若饥,谦卑若愚",望共勉。
版权声明:本文为qq_42351033原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_42351033/article/details/120797727

智能推荐

【Dart 教程系列第 36 篇】Dart 之 startsWith,endsWith 判断字符串是否以指定元素开头或者结尾

这是【Dart 教程系列第 36 篇】,如果觉得有用的话,欢迎关注专栏。 startsWith 源码如下所示 语法 判断字符串是否以指定字符开头,成立返回 true,不成立返回 false。 第一个参数是指定的字符,第二个为可选参数,代表从哪个索引位置开始判断,默认为 0 ,其中 index 不能为负数,且不大于字符串的长度。 举例 endsWith 源码如下所示 语法 判断字符串是否以指定字符结...

dart系列之:dart类的扩展

文章目录 简介 使用extends 抽象类和接口 mixins 总结 简介 虽然dart中的类只能有一个父类,也就是单继承的,但是dart提供了mixin语法来绕过这样限制。 今天,和大家一起来探讨一下dart类中的继承。 使用extends 和JAVA一样,dart中可以定义一个父类,然后使用extends来继承他,得到一个子类,如下所示: 在子类中,可以使用super关键词来调用父类的方法。 ...

【Dart 教程系列第 32 篇】Dart 中 String 字符串类型的方法总结,看这一篇就够了

这是【Dart 教程系列第 32 篇】,如果觉得有用的话,欢迎关注专栏。 Dart 中的 String 编码格式是 UTF-16,也就是 16 位的 Unicode 转换格式的代码单元序列。 以 Dart SDK 2.13.4 版本为例,Dart 中关于字符串的方法有 25 个,本篇博客说下其中的 23 个,因为有两个过于冷门,不再进行说明,接下来我将按字符串的功能来逐个介绍相应的方法。 文章目录...

【Dart 教程系列第 47 篇】Dart 求数组中的最大值和最小值

这是【Dart 教程系列第 47 篇】,如果觉得有用的话,欢迎关注专栏。 求数组中的最大值和最小值你可以用各种常见的排序方法(如冒泡、选择等),也可以自己写个 for 循环实现。 会的我就不说了,今天说一个简洁点的,使用 Dart 数组中的 reduce 方法和 math 类中的 max 和 min 方法,一行代码就可以实现。 封装成了一个简单的数学工具类,有需自取。 你的问题得到解决了吗?欢迎在...

猜你喜欢

dart系列之:dart中的异步编程

文章目录 简介 为什么要用异步编程 怎么使用 Future 异步异常处理 在同步函数中调用异步函数 总结 简介 熟悉javascript的朋友应该知道,在ES6中引入了await和async的语法,可以方便的进行异步编程,从而摆脱了回调地狱。dart作为一种新生的语言,没有理由不继承这种优秀的品质。很自然的,dart中也有await和async语言,一起来看看吧。 为什么要用异步编程 那么为什么要...

dart系列之:dart语言中的变量

文章目录 简介 dart中的变量 定义变量 变量的默认值 Late变量 常量 总结 简介 flutter是google在2015年dart开发者峰会上推出的一种开源的移动UI构建框架,使用flutter可以非常方便的编译成运行在原始android,ios,web等移动平台上的移动应用。 flutter是使用dart来编写的,最新的flutter版本是2.5.3,而最新的Dart语言版本是2.14。...

dart系列之:dart语言中的内置类型

文章目录 简介 Null 数字 字符串 布尔值 列表 set和map 简介 和所有的编程语言一样,dart有他内置的语言类型,这些内置类型都继承自Object,当然这些内置类型是dart语言的基础,只有掌握了这些内置类型才能够在使用dart语言的时候得心应手。 今天就给大家讲解一下dart语言的内置类型。 Null 在dart中用null来表示空。那么null和Null有什么关系呢? Null是一...

dart系列之:dart语言中的函数

文章目录 简介 函数的参数 main函数 匿名函数 闭包 函数的返回值 总结 简介 函数是所有编程语言都有的内容,不管是面向对象还是面向过程,函数都是非常重要的一部分。dart中的函数和java中的函数有什么区别呢? dart作为一种面向对象的编程语言,它的函数也是一个对象,用Function来表示。先看下函数的定义: 既然函数是一个对象,那么可以将函数赋值给对象,还可以将函数当做参数传递给其他的...