Quiero convertir un entero en su carácter equivalente basado en el alfabeto. Por ejemplo:
0 => a
1 => b
2 => c
3 => d
etc. Podría construir una matriz y simplemente buscarla cuando la necesite, pero me pregunto si hay una función integrada para hacer esto por mí. Todos los ejemplos que he encontrado a través de Google están trabajando con valores ASCII y no con la posición de un personaje en el alfabeto.
javascript
integer
alphabet
VIVA LA NWO
fuente
fuente
Respuestas:
Suponiendo que quiere letras minúsculas:
97 es el código ASCII para minúsculas 'a'. Si desea letras mayúsculas, reemplace 97 con 65 (mayúsculas 'A'). Tenga en cuenta que si
n > 25
saldrá del rango de letras.fuente
Será más portátil en caso de extenderse a otros alfabetos:
o, para ser más compatible (con nuestro querido IE):
fuente
String.fromCharCode
en mi opinión, como dijiste, se extiende muy fácilmente.[]
en cadenas.[]
propiedad en cadenas es compatible con IE desde IE8 en adelante (IE8 en modo de compatibilidad con IE7 tampoco funciona),String.prototype.chatAt
se prefiere en lugar de la[]
compatibilidad del navegador. Por ejemplo'foo'.charAt(0) == 'f'
[]
propiedad en cadenas está estandarizado en ECMAScript 5 (ver [[GetOwnProperty]] (P) ).Si no le importa recuperar cadenas de caracteres múltiples, puede admitir índices positivos arbitrarios:
(No probado exhaustivamente para errores de precisión :)
fuente
function idOf(i) { return (i >= 26 ? idOf(Math.floor(i / 26) -1 ) : '') + 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'[i % 26]; }
Una respuesta simple sería (26 caracteres):
Si el espacio es precioso, puede hacer lo siguiente (20 caracteres):
¡Piensa en lo que podrías hacer con todos esos bytes adicionales!
Cómo funciona esto es que convierte el número a base 36, por lo que tiene los siguientes caracteres:
Al compensar por 10 los caracteres comienzan en
a
lugar de0
.Sin embargo, no estoy completamente seguro de qué tan rápido se compararían los dos ejemplos diferentes del lado del cliente.
fuente
String.fromCharCode (código1, código2, ..., códigoN) de Javascript toma un número infinito de argumentos y devuelve una cadena de letras cuyos valores ASCII correspondientes son código1, código2, ... códigoN. Como 97 es 'a' en ASCII, podemos ajustar su indexación agregando 97 a su índice.
fuente
No me gustan todas las soluciones que usan números mágicos como
97
o36
.esto asume letras mayúsculas y comienza 'A' en 0.
fuente
Uso
String.fromCharCode
. Esto devuelve una cadena de un valor Unicode, que coincide con los primeros 128 caracteres de ASCII.fuente
Ahí tienes: (a-zA-Z)
input: 0-51, o devolverá falso (error de rango);
O:
devuelve indefinido en caso de error de rango. NOTA: la matriz se creará solo una vez y, debido al cierre, estará disponible para la nueva función codeToChar. Supongo que es aún más rápido que el primer método (es solo una búsqueda básicamente).
fuente
El único problema con la gran solución de @ mikemaccana es que utiliza el operador binario >> que es costoso, en cuanto a rendimiento. Sugiero esta modificación a su gran trabajo como una ligera mejora que sus colegas quizás puedan leer más fácilmente.
O como una sola línea
Ejemplo:
fuente
Tratar
Mostrar fragmento de código
fuente
Suponiendo que quiere letras mayúsculas:
Ejemplo:
numberToLetter ('023') es ["A", "C", "D"]
numberToLetter ('5') es "F"
fuente