有没有办法使用JavaScript的RegEx引擎转换
"2"
- > "HelloHello"
?
"3"
- > "HelloHelloHello"
?
答案 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
答案 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'