Quiero crear una cadena en JavaScript que contiene todos los caracteres ascii. ¿Cómo puedo hacer esto?

  • ¿Qué quieres decir con «todos»? Alfabético, o, literalmente, cada carácter de la representación, independientemente de si se tiene un verdadero valor escrito?
  • Utilizar un literal de cadena.
InformationsquelleAutor Gjorgji | 2010-03-15

6 Comentarios

  1. 21

    Mi javascript es un poco oxidado, pero algo como esto:

    s = '';
    for( var i = 32; i <= 126; i++ )
    {
        s += String.fromCharCode( i );
    }

    No está seguro de si el rango es correcta, aunque.

    Edición:

    Parece que debe ser de 32 a 127 a continuación. Ajustados.

    Edit 2:

    Desde char 127 no es un carácter imprimible bien, vamos a tener que limitar a 32 <= c <= 126, en lugar de 32 <= c <= 127.

    • Él hizo especificar ASCII, y es probable que sólo quiere caracteres imprimibles, por lo que usted quiere meter a 32 <= c <= 127.
    • En realidad, el carácter 127 realmente no se pueden imprimir, para 32 <= c < 127.
    • Tienes razón Miguel, yo no estaba seguro acerca de la actual gama de ASCII. Shame on me. :-/ Pero he visto de él hasta ahora, y parece que nos debe limitar a la 32 a 126, ya que DEL no es un carácter imprimible, ya sea que yo creo. Pero me corrija si estoy equivocado.
    • Bueno, hay que ir, se me pegaba a él.
    • Necesito que todos ascii chatacters. Sin embargo, esto también ayuda. Gracias
    • que personajes son los que faltan? ¿Por qué crees que los que no son todos?
    • Apostaría a que él está buscando «todos los imprimibles de caracteres de europa Occidental» o «todos los caracteres imprimibles en mi primer script». La definición de la palabra «ascii», especialmente cuando se representan en minúsculas, se ha vuelto un poco descuidado lo largo de los años, me he dado cuenta.
    • También hay ASCII Extendido con charcodes hasta 255 (incluye algunas letras acentuadas como á, varios símbolos, como ±, º, ≡ y también nbsp con el código 255)
    • ASCII extendido no es un conjunto de caracteres. Por lo que el plazo es insuficiente para casi todos los propósitos. JavaScript se utiliza la codificación UTF-16 de la codificación de caracteres de la conjunto de caracteres Unicode (como Java, .NET, VB4/5/6/UN/Script, …).

  2. 69
    var s = ' !"#$%&\'()*+,-./0123456789:;<=>[email protected][\]^_`abcdefghijklmnopqrstuvwxyz{|}~';
    • Yo estaba buscando unicode, por lo que alguien podría ser también: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyzàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßàáâãäåæçèéêëìíîïð
    • Hendriks Que no no contiene todos los puntos de código Unicode. Ni siquiera cubrir los dos primeros bloques.
    • Esta pregunta muy claramente pide una cadena que contiene todos (impresión) ASCII caracteres, lo que es factible, como el ASCII es un pequeño conjunto fijo. Si pretendes cubrir alguna juego de caracteres más allá de ASCII, usted debe entender cómo Unicode clasifica los puntos de código y el uso de la solución adecuada para su problema de caso. Si usted está en busca de «una cadena que contiene todos los caracteres», que está haciendo las cosas mal – lo más probable, algo que es mal.
    • Sólo estoy tratando de ayudar a alguien que podría estar buscando algunos caracteres unicode, como yo era. Llegaron aquí desde Google.
    • Yo sólo quería un literal de cadena, con todos los ASCII de los caracteres imprimibles. Gracias google. Gracias @StuartP.Bentley.
  3. 4

    Solo bucle de los códigos de caracteres y convertir cada uno a un personaje:

    var s = '';
    for (var i=32; i<=127;i++) s += String.fromCharCode(i);
  4. 3

    Sólo quería poner esto aquí por referencia. (tarda alrededor de 13/100 a 26/100 de un ms en mi equipo a generar).

    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 el conjunto cada vez que se ejecute el script, es probablemente)(toma alrededor de 3/100-35/100 de una milésima de segundo en mi equipo a 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, esta es sólo de 3 a 10 veces más lento que la asignación de los literales de cadena directamente(con comillas simples inclinadas a decirle javascript para evitar la mayoría de los análisis de barra diagonal inversa).

    var x;
    var t;
    
    t = performance.now();
    x = '!\"#$%&\'()*+,-./0123456789:;<=>[email protected][\]^_`abcdefghijklmnopqrstuvwxyz{|}~';
    t = performance.now() - t;
    console.log(t);

    .

  5. 1

    Sin hacer varias anexa:

    JS:

    var s = Array.apply(null, Array(127-32))
      .map(function(x,i) {
        return String.fromCharCode(i+32);
      }).join("");

  6. -1

    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)
    • A la pregunta de imprimible ASCII.

Dejar respuesta

Please enter your comment!
Please enter your name here