在Perl中,我可以使用以下语法多次重复一个字符:
$a = "a" x 10; // results in "aaaaaaaaaa"
有没有一种简单的方法在Javascript中实现这一点?我显然可以使用一个函数,但我想知道是否有内置的方法,或者其他一些巧妙的技术。
在Perl中,我可以使用以下语法多次重复一个字符:
$a = "a" x 10; // results in "aaaaaaaaaa"
有没有一种简单的方法在Javascript中实现这一点?我显然可以使用一个函数,但我想知道是否有内置的方法,或者其他一些巧妙的技术。
当前回答
另一种选择是:
for(var word = ''; word.length < 10; word += 'a'){}
如果需要重复多个字符,请乘以条件:
for(var word = ''; word.length < 10 * 3; word += 'foo'){}
注意:您不必像word=Array(11)那样超出1。join('a')
其他回答
如今,重复字符串方法几乎在所有地方都得到了实现。(它不在Internet Explorer中。)因此,除非您需要支持较旧的浏览器,否则只需编写:
"a".repeat(10)
在重复之前,我们使用了这个黑客:
Array(11).join("a") // create string with 10 a's: "aaaaaaaaaa"
(注意,长度为11的数组只能得到10个“a”,因为array.join将参数放在数组元素之间。)
西蒙还指出,根据这个基准,在Safari和Chrome(而不是Firefox)中,通过简单地使用for循环追加一个字符来重复多次似乎更快(虽然有点不那么简洁)。
如果你经常重复自己的话,那么很方便:
String.prototype.repeat=String.prototype.repeat||函数(n){n=n||1;return Array(n+1).join(this);}alert('我们到了吗?\n没有。\n'。重复(10))
另一种快速重复n个字符的有趣方法是使用快速求幂算法的思想:
var repeatString = function(string, n) {
var result = '', i;
for (i = 1; i <= n; i *= 2) {
if ((n & i) === i) {
result += string;
}
string = string + string;
}
return result;
};
/**
* Repeat a string `n`-times (recursive)
* @param {String} s - The string you want to repeat.
* @param {Number} n - The times to repeat the string.
* @param {String} d - A delimiter between each string.
*/
var repeat = function (s, n, d) {
return --n ? s + (d || "") + repeat(s, n, d) : "" + s;
};
var foo = "foo";
console.log(
"%s\n%s\n%s\n%s",
repeat(foo), // "foo"
repeat(foo, 2), // "foofoo"
repeat(foo, "2"), // "foofoo"
repeat(foo, 2, "-") // "foo-foo"
);
截至目前,96.39%的浏览器支持String.repeat()。
function pad(text, maxLength){
return text + "0".repeat(maxLength - text.length);
}
console.log(pad('text', 7)); //text000