也算是突然间的发现,js在操作字符串的时候,不是那么灵活,如臂使指
比如一个很简单且普遍的需求,对一个字符串,替换其中的某一位的时候,操作起来就很不容易
如题:
“hello world”的第5、7位替换成“*”,有什么快速简易的方法?
一开始想着像操作数组一样操作字符串下标,给它赋值,但令人惊讶的是,这行不通,只能读取,不能修改
我想,这在一定程度上,这在一定程度上反应了js中字符串的特点:
要改变变量保存的字符串,首先要销毁原来的字符串,然后再用另一个包含新值的字符串填充该变量
所以,仅用这种简单到近乎赤裸的方法修改字符串应该是行不通的。
那么我们有什么办法来实现呢?
一、转成数组的方式来解决
我们通过解构的方式将字符串拆分成数组,然后修改数组来改变我们的内容,最后再通过join方法来将数组转回字符串
二、将字符串切开替换,再拼接回来
slice()、substr()、substring()这三个方法取子字符串的方式大同小异,都是找到开始位置,然后往后取,即便传入负值时也是如此
所以我们想要把“123456789”拆分成“1234”、“567”、“89”时,需要1)字符串长度,2)被替换的子字符串长度,3)后半段字符串开始位置