2010-12-28 17 views

Respuesta

54

No existe tal función, pero bueno, puede crearlo:

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

Uso:

var s = " ".repeat(3); 

Por supuesto, se podría escribir esto como parte de un grupo independiente de las funciones:

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

Uso:

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

Prefiero esa solución a la mía. No sabía que podía agregar funcionalidad a la clase String y posiblemente a cualquier clase. –

+9

Ahhh, vete con la extensión del prototipo ... –

+0

@Sybiam: puedes, pero no lo hagas. Bueno, si es algo universalmente útil, está bien, pero algo así, póngalo en una biblioteca. – Malvolio

0

¿No has tratado con un bucle

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

?

2

Creo que su mejor y única forma de lograr esto es repetir el hilo. Hasta donde yo sé, no existe tal característica en ningún idioma.

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

var myString = multiString("&nbsp;", 3); 

Pero supongo que podría resolverlo.

+0

Perl tiene el operador X para repetir cosas como esta - también hay otros idiomas –

+0

Lo sé en python y de una solución a continuación podemos hacerlo con matrices y unirnos. Pero no considero estas soluciones como características. No sé sobre el operador X pero hoy en día no estoy sorprendido por Perl. Después de ver la tabla periódica de operadores para Perl. Nada me sorprenderá más. –

5

También puede utilizar Array.join:

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

> repeat('&nbsp;', 3) 
"&nbsp;&nbsp;&nbsp;" 
5

Aquí está una manera ordenada que implica ningún bucle. Además de ser conciso, estoy bastante seguro de que usar join es mucho más eficiente para cadenas muy grandes.

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

También puede poner este código en el prototipo de cuerdas, pero soy de la mentalidad de que es una mala idea que meterse con el prototipo de construido en tipos.

Cuestiones relacionadas