dart:字符串replace相关的方法

本文详细介绍了Dart中用于字符串替换的多种方法,包括replaceAll、replaceAllMapped、replaceFirst、replaceFirstMapped和replaceRange。由于Dart字符串是不可变的,这些方法都会返回新的字符串。每个方法的使用示例和特性都有所说明,帮助开发者更好地理解和应用这些方法。
摘要由CSDN通过智能技术生成

js中字符串有replace方法,通过正则表达式的修饰符可以用一个replace方法结合正则表达式实现各种方式的替换。

不过dart中对各种替换方式做了细分。需要另外注意的是,dart中字符串是不可变的对象,所有replace相关的方法都不会修改原 字符串,而是返回一个新字符串。

1. replaceAll

String replaceAll(pattern from,String replace)

replaceAll第一个参数是匹配符,可以是字符串也可以是正则表达式,第二个参数是要替换的字符串,返回值是一个新字符串。

  var a = 'a1b2c3a';
  var b = '123';
  print(a.replaceAll('a', '123')); //1231b2c3123
  print(b.replaceAll(RegExp(r'(\d)'), '111')); //111111111

2.replaceAllMapped

String replaceAllMapped(

Pattern from,

String replace(Match match)

)

replaceAllMapped第一个参数是匹配符,可以是字符串也可以是正则,第二个参数是一个函数,函数的参数捕获到的字符串片段,其实就是对捕获的字符串片段的一个映射,看函数名的mapped就能看的出来。

  var c = '123';
  var d = 'this is an apple';
  print(c.replaceAllMapped('2', (Match m) => '${m[0]}-${m[0]}-'));//12-2-3
  print(d.replaceAllMapped(RegExp(r'apple'), (Match m) => 'orange'));//this is an orange

3.replaceFirst

String replaceFirst(

Pattern from,

String to,

[int startIndex = 0]

)

replaceFirst第一参数是匹配符,可以是字符串也可以是正则,第二个参数是要替换的字符串,第三个参数可选,默认是0,。这个方法如果匹配到了多个字符串片段,那么只会替换下标startIndex的那个捕获片段,如果下标比捕获的片段长度达,那么将会报错

  var d = '123';
  print(d.replaceFirst(RegExp(r'\d'), 'ccc', 1)); //1ccc3

4.replaceFirstMapped

String replaceFirstMapped(

Pattern from,

String replace(Match match),

[int startIndex = 0]

)

replaceFirstMapped和replaceAllMapped类似,替换捕获到的字符串片段中startIdnex对应的那个片段,并通过第二个参数传的函数进行转换。

  var e = 'asd';
  print(e.replaceFirstMapped(RegExp(r'\w'), (Match m) => '${m[0]}${m[0]}', 2),);//asdd

5.replaceRange

String replaceRange(

int start,

int end,

String replacement

)

replaceRange第一个参数是开始下标,第二个参数是结束下标,第三个参数是要替换的字符串。替换的字符串包含开始下标,不包含结束下标,并且开始下标的数字要>=0,小于等于结束下标,结束下标的值要小于等于字符串长度,否则会报错。

  var f = '123456789';
  print(f.replaceRange(1, 3, 'replace')); //1replace456789

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值