javascript - tabla - Cadena que contiene todos los caracteres ascii.
string charat js (6)
Aquí hay una versión en coffeescript.
require ''fluentnode''
all_Ascii = ->
(String.fromCharCode(c) for c in [0..255])
describe ''all Ascii'', ->
it ''all_Ascii'', ->
all_Ascii.assert_Is_Function()
all_Ascii().assert_Size_Is 256
all_Ascii()[0x41].assert_Is ''A''
all_Ascii()[66 ].assert_Is ''B''
all_Ascii()[50 ].assert_Is ''2''
all_Ascii()[150 ].assert_Is String.fromCharCode(150)
Quiero crear una cadena en JavaScript que contenga todos los caracteres ASCII. ¿Cómo puedo hacer esto?
Mi javascript está un poco oxidado, pero algo como esto:
s = '''';
for( var i = 32; i <= 126; i++ )
{
s += String.fromCharCode( i );
}
Aunque no estoy seguro de si el rango es correcto.
Editar:
Parece que debería ser de 32 a 127 entonces. Equilibrado.
Edición 2:
Como el carácter 127 tampoco es un carácter imprimible, tendremos que reducirlo a 32 <= c <= 126, en lugar de 32 <= c <= 127.
Sólo quería poner esto aquí como referencia. (para generar aproximadamente 13/100 a 26/100 ms en mi computadora).
var allAsciiPrintables = JSON.stringify((Array.from(Array(126 + 32).keys()).slice(32).map((item) => {
return String.fromCharCode(item);
})).join(''''));
Descompuesto
var allAsciiPrintables = (function() {
/* ArrayIterator */
var result = Array(126 + 32).keys();
/* [0, 126 + 32] */
result = Array.from(result);
/* [32, 126 + 32] */
result = result.slice(32);
/* transform each item from Number to its ASCII as String. */
result = result.map((item) => {
return String.fromCharCode(item);
});
/* convert from array of each string[1] to a single string */
result = result.join('''');
/* create an escaped string so you can replace this code with the string
to avoid having to calculate this on each time the program runs */
result = JSON.stringify(result);
/* return the string */
return result;
})();
La solución más eficiente (si desea generar todo el conjunto cada vez que se ejecuta la secuencia de comandos, es probablemente) (toma alrededor de 3 / 100-35 / 100 milisegundos en mi computadora para generar).
var allAsciiPrintables = (() => {
var result = new Array(126-32);
for (var i = 32; i <= 126; ++i) {
result[i - 32] = (String.fromCharCode(i));
}
return JSON.stringify(result.join(''''));
})();
extrañamente, esto es solo 3 a 10 veces más lento que la asignación de la cadena literal directamente (con backticks para indicar a javascript que evite la mayoría de los análisis de barra diagonal inversa).
var x;
var t;
t = performance.now();
x = ''!/"#$%&/'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[//]^_`abcdefghijklmnopqrstuvwxyz{|}~'';
t = performance.now() - t;
console.log(t);
.
Simplemente coloca los códigos de los caracteres y convierte cada uno en un carácter:
var s = '''';
for (var i=32; i<=127;i++) s += String.fromCharCode(i);
Sin hacer varios apéndices:
var s = Array.apply(null, Array(127-32))
.map(function(x,i) {
return String.fromCharCode(i+32);
}).join("");
var s = '' !"#$%&/'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[//]^_`abcdefghijklmnopqrstuvwxyz{|}~'';