使用#个字符生成字符串

时间:2009-09-22 09:10:46

标签: javascript string

是否可以生成由250个下划线组成的字符串,而不使用循环? 我想避免编写这样的代码:

var myString= '';
for (var i=0; i < 250; i++) {
    myString += '_';
}

5 个答案:

答案 0 :(得分:8)

没有内置解决方案,但问题Repeat String - Javascript有一个很好的解决方案:

如果你不想改变String原型,你可以这样做:

var num = 250;
var myChar = '_';
var myString = new Array(num + 1).join(myChar);

这是创建一个251个未定义的数组,然后由你的角色加入它们。 由于undefined在转换为.join()中的字符串时为''(空字符串),因此会为您提供您所追求的字符串。

答案 1 :(得分:2)

它有点像黑客,但你可以这样做:

var arr = new Array(251);
var lineStr = arr.toString().replace(/,/g, "_");

答案 2 :(得分:1)

使用比最长下划线数更长的常量,并使用substring()来获得所需数量的常量。

答案 3 :(得分:0)

var myString = "__________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________";

为什么要生成它?为什么要避免for循环?

答案 4 :(得分:0)

这是一个在(或多或少)对数运行时创建字符串的函数:

function repeat(string, times) {
    if(!(times = +times)) return ''; // convert to number; check for NaN, 0
    var result = '' + string, i = 1;
    for(; i * 2 <= times; i *= 2) result += result;
    for(; i < times; ++i) result += string;
    return result;
}

var u250 = repeat('_', 250);

希望我没有弄乱循环条件;)

此外,Aaron's suggestion可以自动化:

function underscores(count) {
    while(count > underscores.buffer.length)
        underscores.buffer += underscores.buffer;
    return underscores.buffer.substring(0, count);
}
underscores.buffer = '_';

var u250 = underscores(250);