dart:字符串replace相关的⽅法
js中字符串有replace⽅法,通过正则表达式的修饰符可以⽤⼀个replace⽅法结合正则表达式实现各种⽅式的替换。
不过dart中对各种替换⽅式做了细分。需要另外注意的是,dart中字符串是不可变的对象,所有replace相关的⽅法都不会修改原 字符串,⽽是返回⼀个新字符串。
1. replaceAll
String replaceAll(pattern from,String replace)
replaceAll第⼀个参数是匹配符,可以是字符串也可以是正则表达式,第⼆个参数是要替换的字符串,返回值是⼀个新字符串。
var a = 'a1b2c3a';
var b = '123';
placeAll('a', '123')); //1231b2c3123
placeAll(RegExp(r'(\d)'), '111')); //111111111
String replaceAllMapped(
Pattern from,
String replace(Match match)
)
replaceAllMapped第⼀个参数是匹配符,可以是字符串也可以是正则,第⼆个参数是⼀个函数,函数的参数捕获到的字符串⽚段,其实就是对捕获的字符串⽚段的⼀个映射,看函数名的mapped就能看的出来。
var c = '123';
var d = 'this is an apple';
placeAllMapped('2', (Match m) => '${m[0]}-${m[0]}-'));//12-2-3
placeAllMapped(RegExp(r'apple'), (Match m) => 'orange'));//this is an orange
String replaceFirst(
Pattern from,
String to,
[int startIndex = 0]
)
replaceFirst第⼀参数是匹配符,可以是字符串也可以是正则,第⼆个参数是要替换的字符串,第三个参数可选,默认是0,。这个⽅法如果匹配到了多个字符串⽚段,那么只会替换下标startIndex的那个捕获⽚段,如果下标⽐捕获的⽚段长度达,那么将会报错
var d = '123';jsreplace函数
placeFirst(RegExp(r'\d'), 'ccc', 1)); //1ccc3
String replaceFirstMapped(
Pattern from,
String replace(Match match),
[int startIndex = 0]
)
replaceFirstMapped和replaceAllMapped类似,替换捕获到的字符串⽚段中startIdnex对应的那个⽚段,并通过第⼆个参数传的函数进⾏转换。
var e = 'asd';
placeFirstMapped(RegExp(r'\w'), (Match m) => '${m[0]}${m[0]}', 2),);//asdd
String replaceRange(
int start,
int end,
String replacement
)
replaceRange第⼀个参数是开始下标,第⼆个参数是结束下标,第三个参数是要替换的字符串。替换的字符串包含开始下标,不包含结束下标,并且开始下标的数字要>=0,⼩于等于结束下标,结束下标的值要⼩于等于字符串长度,否则会报错。
var f = '123456789';
placeRange(1, 3, 'replace')); //1replace456789

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。