在JavaScript中,通过重复一次字符串n次来替换数字(n)

时间:2015-05-04 00:55:17

标签: javascript regex

有没有办法使用JavaScript的RegEx引擎转换

"2" - > "HelloHello"

"3" - > "HelloHelloHello"

4 个答案:

答案 0 :(得分:1)

"Hello".repeat(2);

这是新的!在某些浏览器中不可用!!!! https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/repeat 如果你正在使用支持它的环境,比如服务器端的JS框架,这是完美的。

这是我想出的一种方式,但我承认它非常笨拙。

数组(2 + 1).join(“你好 - ”)。分裂(“ - ”)。join('');

见评论:P

答案 1 :(得分:0)

您可以将大写字母开头的单词替换为自己2次,如

"HelloHello".replace(/([A-Z][^A-Z]*)/, '$1$1')

答案 2 :(得分:0)

String.prototype.replace()允许传递一个函数来进行替换,你可以这样使用:

var a = '123',
    words = ['foo', 'bar', 'baz'];

a = a.replace(/\d/g, function (match, i){
    return words[i].repeat(match);
});

给出了:

foobarbarbazbazbaz

http://jsfiddle.net/eqz2y58h/1/

或(更明确):

var a = '123',
    words = ['foo', 'bar', 'baz'];

a.match(/\d/g).forEach(function (b, c){
    a = a.replace(new RegExp(b, 'g'), words[c].repeat(b));
});

给出:

foobarbarbazbazbaz

http://jsfiddle.net/eqz2y58h/

答案 3 :(得分:0)

这是一个功能:

function repeatWord(str, n) {
    return str + Array(n + 1).join(str.match(/(.*)\1/)[1]);
}

您可以像以下一样使用它:

repeatWord('HelloHello', 3);
  

'HelloHelloHelloHelloHello'

3意味着将Hello添加到结尾3次。

<小时/> 在ES6 Harmony中,有一个repeat函数。您可以添加:

String.prototype.repeat||String.prototype.repeat = a => {
    var b =  '', _i = 0;
    for (; _i < +a; _i += 1)  b += this;
    return b;
};

您可以像以下一样使用它:

"Hello".repeat(3);
  

"HelloHelloHello"

这也许是你想要的:

function repeat (format, n) {
    return Array(+n + 1).join(format);
}

repeat('Hello', '3');
  

'HelloHelloHello'