【问题标题】:How can I repeat strings in JavaScript? [duplicate]如何在 JavaScript 中重复字符串? [复制]
【发布时间】:2010-12-28 22:03:23
【问题描述】:

在 JavaScript 中,我如何创建一个重复字符串 x 次的字符串:

var s = new String(" ",3);

//s would now be "   "

【问题讨论】:

    标签: javascript


    【解决方案1】:

    没有这个功能,但是,你可以创建它:

    String.prototype.repeat = function(times) {
       return (new Array(times + 1)).join(this);
    };
    

    用法:

    var s = " ".repeat(3);
    

    当然,您可以将其编写为独立函数组的一部分:

    var StringUtilities = {
        repeat: function(str, times) { 
           return (new Array(times + 1)).join(str);
        }
        //other related string functions...
    };
    

    用法:

    var s = StringUtilities.repeat(" ", 3);
    

    【讨论】:

    • 我更喜欢那个解决方案。我不知道我们可以将功能附加到 String 类,也可能附加到任何类。
    • 啊,离开原型扩展...
    • @Sybiam -- 你可以,但不要。好吧,如果它是普遍有用的东西,好吧,但是像这样,把它放在图书馆里。
    • @Malvolio 我更新了我的答案以适应您的观点......
    • @Ivo 我个人喜欢原型扩展;为什么不使用您可以使用的语言结构?
    【解决方案2】:

    你也可以使用Array.join:

    function repeat(str, times) {
        return new Array(times + 1).join(str);
    }
    
    > repeat(' ', 3)
    "   "
    

    【讨论】:

      【解决方案3】:

      这是一种不涉及循环的简洁方法。除了简洁之外,我很确定使用 join 对于非常大的字符串更有效。

      function repeat(str, num) { 
          return (new Array(num+1)).join(str); 
      }
      

      您也可以将此代码放在 String 原型上,但我的心态是,弄乱内置类型的原型是个坏主意。

      【讨论】:

        【解决方案4】:

        我认为实现这一点的最好也是唯一的方法是循环遍历你的字符串。据我所知,任何语言都没有这样的功能。

        function multiString(text, count){
            var ret = "";
            for(var i = 0; i < count; i++){
                ret += text;
            }
            return ret;
        }
        
        var myString = multiString("&nbsp;", 3);
        

        但我想你可以弄清楚。

        【讨论】:

        • Perl 有 X 运算符来重复这样的事情 - 还有其他语言也是如此
        • 我知道在 python 中,从下面的解决方案中,我们可以使用数组和加入来做到这一点。但我不认为这些解决方案是功能。我不知道 X 运算符,但现在我对 Perl 并不感到惊讶。在我看到 perl 的运算符周期表之后。没有什么会再让我感到惊讶了。
        【解决方案5】:

        你没有尝试过循环

        for (var i = 0; i < 3; i++) {
             s += "&nbsp;"; }
        

        ?

        【讨论】:

          猜你喜欢
          • 2019-10-03
          • 2010-09-17
          • 2013-09-12
          • 2015-07-25
          • 2010-12-02
          • 2013-10-12
          • 2013-01-11
          • 2020-01-19
          • 1970-01-01
          相关资源
          最近更新 更多