【问题标题】:How to use replaceAll() in Javascript.........................? [duplicate]如何在 Javascript 中使用 replaceAll() ............? [复制]
【发布时间】:2011-08-04 16:46:03
【问题描述】:

我正在使用下面的代码替换 , 与 \n\t

ss.replace(',','\n\t')

我想用 \n 替换字符串中的所有逗号,所以添加这个ss.replaceAll(',','\n\t') 它不起作用............!

知道如何克服......吗?

谢谢。

【问题讨论】:

  • 一种方法是你可以在你的应用程序中扩展 String 类String.prototype.replaceAll = function(fromReplace, toReplace){ return this.replace(new RegExp(fromReplace, 'ig'), toReplace); }

标签: javascript


【解决方案1】:

您需要进行全局替换。不幸的是,你不能用字符串参数做这个跨浏览器:你需要一个正则表达式:

ss.replace(/,/g, '\n\t');

g 修饰符使搜索全局化。

【讨论】:

    【解决方案2】:

    这里是 replaceAll 的另一个实现。希望它可以帮助某人。

        String.prototype.replaceAll = function (stringToFind, stringToReplace) {
            if (stringToFind === stringToReplace) return this;
            var temp = this;
            var index = temp.indexOf(stringToFind);
            while (index != -1) {
                temp = temp.replace(stringToFind, stringToReplace);
                index = temp.indexOf(stringToFind);
            }
            return temp;
        };
    

    然后就可以使用了:

    var myText = "My Name is George";                                            
    var newText = myText.replaceAll("George", "Michael");
    

    【讨论】:

    • 谢谢您,先生,您是否将性能差异与Regex进行了比较?我无法让正则表达式全局替换工作......
    • 如果 stringToFind 包含 stringToReplace 的一部分,这将进入无限循环。考虑记录当前索引(从 -1 开始)并让 while 循环检查下一个索引是否大于当前索引。
    【解决方案3】:

    你需要在这里使用正则表达式。请尝试关注

    ss.replace(/,/g,”\n\t”)
    

    g 表示全局替换。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-26
      • 1970-01-01
      • 2014-02-28
      • 2015-11-10
      • 2019-09-05
      • 1970-01-01
      • 1970-01-01
      • 2016-08-27
      相关资源
      最近更新 更多