JS字符串的方法:replace 和 replaceAll

325 阅读1分钟

前言

昨日导师教了一个字符串的 replaceAll 方法,我愣了好几秒,也可能用过忘记了吧。

顾名思义,relaceAll 是替换所有的,replace 自然是替换第一个。当然,replaceAll 出生之前,replace 配合正则也是可以实现 replaceAll 的功能的。

可我又按捺不住好奇心,还想扒出 replace 的种种,于是去各大网站搜索。这一扒,竟然发现 Java 中也有同样的方法,不仅有 replace 和 replaceAll,还有 replaceFirst。唉,我这个门外汉还是不叨叨了,只是发觉好有意思,提一嘴。下面干活了。

replace 替换第一个符合条件的

<template>
  <div v-html="message">
  </div>
</template>
<script>
export default {
  data() {
    return {
      message: '',
    }
  },
  mounted () {
    let msg = '浮生记、燕无歇、醉倾城、醉千年、离人愁、卷珠帘'
    this.message = msg.replace('、','#')
  }
};
</script>

image.png

replaceAll 替换所有符合条件的

<template>
  <div v-html="message"></div>
</template>
<script>
export default {
  data() {
    return {
      message: '',
    }
  },
  mounted () {
    let msg = '浮生记、燕无歇、醉倾城、醉千年、离人愁、卷珠帘'
    this.message = msg.replaceAll('、','<br/>')
  }
};
</script>

image.png

replace 配合正则替换所有符合条件的

<template>
  <div v-html="message">
  </div>
</template>
<script>
export default {
  data() {
    return {
      message: '',
    }
  },
  mounted () {
    let msg = '浮生记、燕无歇、醉倾城、醉千年、离人愁、卷珠帘'
    this.message = msg.replace(/、/g,'+')
  }
};
</script>

image.png

补充:match 和 matchAll

既然都到这个份上了,那就瞅一瞅 match 和 matchAll 吧

let msg = 'abcdefgabcdefgabcdefg'

let message1 = msg.match(/a/)
console.log(message1)
// [ 'a', index: 0, input: 'abcdefgabcdefgabcdefg', groups: undefined ]

let message2 = msg.match(/a/g)
console.log(message2)
// [ 'a', 'a', 'a' ]

let message3 = [...msg.matchAll(/a/g)]
console.log(message3)
//[
//  [ 'a', index: 0, input: 'abcdefgabcdefgabcdefg', groups: undefined ],
//  [ 'a', index: 7, input: 'abcdefgabcdefgabcdefg', groups: undefined ],
//  [ 'a', index: 14, input: 'abcdefgabcdefgabcdefg', groups: undefined ]
//]

注意 matchAll 匹配的时候,不带 g 会报错。好了,我也只懂这么一丢丢,散场......