Generador de "strings" random - javascript

ElRuso

Hoy en el curro me curre un generador de strings random usando javascript en un par de horitas.


function Output() {  //Function to create a random string

var reps = document.getElementById("StrNum").value;
var length = document.getElementById("SymNum").value;
var str="";
var result="";
for (y=1;y<=reps;y++){
	for (x=1;x<=length;x++){
		var rand_no = Math.floor((126-32)*Math.random()) + 33;
		if (rand_no != 60) {
			str+= String.fromCharCode(rand_no);
		} else { 
			str+="&lt;";
		}
	}
	result+= str + "</br>" ;
	str="";
}
document.getElementById("result").innerHTML=result;
}

Alguna sugernecia como hacer el codigo mas eficeinte/bonito? Por ejemplo como quitar ese "if (rand_no != 60) {" que no me gusta para nada...

LOc0
alternativa

Salu2 ;)

ElRuso

Gracias loco, aunque no lo pillo por completo :P me gusta la idea de pasar la longitud por variable... pero se sigue teniendose el problema del caracter "<" (ASCII 60) que jode el "string" sin HTML encoding...

LOc0

Hola. Puedes definirte un array con todo el "alfabeto" de caracteres (desde ASCII 33 hasta 126), y cambiar el elemento que corresponde a los caracteres problemáticos por su código HTML. Otra opción es filtrar la cadena resultante con alguna función tipo htmlspecialchars de PHP pero para javascript (que no sé si existe).

Lo de la semilla es para que el generador de números pseudoaleatorios sea más "aleatorio". Y el resto es conseguir un numerito entre 33 y 126 con la operación MOD (%) sumándole un desplazamiento.

Salu2 ;)

Usuarios habituales

  • LOc0
  • ElRuso