zoukankan      html  css  js  c++  java
  • js 如何全部替代一个子串为另一个子串

    更多描述: 假设有一个字符串 `hello. hello. hello. ` 需要替换为 `AAA`,即把 `hello. ` 替换为 `A`

    如果需要全量替换字符串,可以使用 String.prototype.replace(re, replacer),其中正则表达式需要开启 global flag

    const s = 'foo foo foo'
    s.replce(/foo/g, 'bar')

    那如题中,是否可以使用正则表达式来替代子串

    答:不可以,因为使用子串构建正则时,有可能有特殊字符,就有可能出现问题,如下

    // 期待结果: 'AhelloX hello3 '
    > 'hello. helloX hello3 '.replace(new RegExp('hello. ', 'g'), 'A')
    < "AAA"

    而在 javascript 中替换子串只能使用一种巧妙的办法:str.split('foo').join('bar')

    > 'hello. hello. hello. '.split('hello. ').join('A')
    < "AAA"

    真是一个巧(笨)妙(拙)的办法啊!!!!!大概 TC39 也意识到了一个问题,于是出了一个新的 API,在 ESNext 中

    String.prototype.replaceAll()
    
    'aabbcc'.replaceAll('b', '.'); 
    // 'aa..cc'

    详细文档在 String.prototype.replaceAll

    总结(及直接答案)

    两种办法

    • str.split('foo').join('bar')
    • str.replaceAll('foo', 'bar'),在 ESNext 中,目前支持性不好
    
    
  • 相关阅读:
    Laravel 学习笔记:Command
    laravel command
    git和并分支
    mysql按日期分组统计的查询
    用GitLab的Merge Request做代码评审
    Git创建合并和删除分支
    生成器和生成器表达式
    闭包,迭代器
    Mysql 初始数据库
    初识函数
  • 原文地址:https://www.cnblogs.com/magicg/p/13392173.html
Copyright © 2011-2022 走看看