zoukankan      html  css  js  c++  java
  • js 字符串 replace replaceAll

    • js中字符串的替换
    var str = "男的女的老的少的";
    alert(str.replace('的',''));

    可以看到替换后的str的值为"男女的老的少的",replace(str1,str2)方法替换的只是第一个匹配的字符串,那么如何实现替换全部匹配的字符串呢? 在java语言中有给出的replaceAll方法能够实现这样的功能,但很遗憾javascript没有提供这样的方法,但replace方法要比我们想象的强大,实际上通过它我们可以实现我们的需求的。

    给出replace的语法定义

    stringObj.replace(rgExp, replaceText)

    其中stringObj是字符串(string),reExp可以是正则表达式对象(RegExp)也可以是字符串(string),replaceText是替代查找到的字符串。

    第一个例子是参数rgExp 为字符串的情况,下面我们用正则表达式实现全部替换的功能

    var str = "男的女的老的少的";
    alert(str.replace(new RegExp(/(的)/g),''));

    以上实现了字符串的全部替换,但这种正则表达式是有局限的,匹配的是一些特定的字符串,如何匹配动态的字符串呢?

    var replaceStr = "的";
    alert(str.replace(new RegExp(replaceStr,'gm'),''));

    这样我们就完成了匹配字符串的动态赋值。

    另外还有其他的方法实现全部替换

    alert(str.split(replaceStr).join(''));

    网上查到一种方法,感觉不可取

    复制代码
    function ReplaceAll(str, sptr, sptr1){
                        while (str.indexOf(sptr) >= 0){
                           str = str.replace(sptr, sptr1);
                        }
                        return str;
                 }
    复制代码

    调用这个方法执行以下代码的话,会陷入死循环的

    var ss = 'abc';
    alert(ReplaceAll(ss,'b','bc'));
  • 相关阅读:
    Codeforces 735C:Tennis Championship(数学+贪心)
    HDU 5934:Bomb(强连通缩点)
    BZOJ-2743 采花
    BZOJ-1878 HH的项链
    BZOJ-1798 维护序列
    BZOJ-1911 特别行动队
    BZOJ-1010 玩具装箱
    BZOJ-1096 仓库建设
    BZOJ-1012 最大数
    ZOJ 3696 Alien's Organ(泊松定理,期望值)
  • 原文地址:https://www.cnblogs.com/firstdream/p/7154415.html
Copyright © 2011-2022 走看看