Je veux convertir un entier en son équivalent de caractère basé sur l'alphabet. Par exemple:
0 => a
1 => b
2 => c
3 => d
etc. Je pourrais construire un tableau et le rechercher quand j'en ai besoin, mais je me demande s'il existe une fonction intégrée pour le faire pour moi. Tous les exemples que j'ai trouvés via Google fonctionnent avec des valeurs ASCII et non avec la position d'un personnage dans l'alphabet.
javascript
integer
alphabet
VIVA LA NWO
la source
la source
Réponses:
En supposant que vous vouliez des lettres minuscules:
97 est le code ASCII pour «a» minuscule. Si vous voulez des lettres majuscules, remplacez 97 par 65 (majuscule «A»). Notez que si
n > 25
, vous sortez de la plage des lettres.la source
Sera plus portable en cas d'extension à d'autres alphabets:
ou, pour être plus compatible (avec notre bien-aimé IE):
la source
String.fromCharCode
mon avis, comme vous l'avez dit, il s'étend très facilement.[]
sur les chaînes.[]
accesseur de propriété sur les chaînes est pris en charge sur IE à partir d'IE8 (IE8 en mode de compatibilité IE7 ne fonctionne pas non plus),String.prototype.chatAt
est préférable[]
à la compatibilité du navigateur. Par exemple'foo'.charAt(0) == 'f'
[]
accesseur de propriété sur les chaînes est normalisé sur ECMAScript 5 (voir [[GetOwnProperty]] (P) ).Si cela ne vous dérange pas de récupérer des chaînes à plusieurs caractères, vous pouvez prendre en charge des indices positifs arbitraires:
(Pas complètement testé pour les erreurs de précision :)
la source
function idOf(i) { return (i >= 26 ? idOf(Math.floor(i / 26) -1 ) : '') + 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'[i % 26]; }
Une réponse simple serait (26 caractères):
Si l'espace est précieux, vous pouvez faire ce qui suit (20 caractères):
Pensez à ce que vous pourriez faire avec tous ces octets supplémentaires!
Comment cela fonctionne est-ce que vous convertissez le nombre en base 36, vous avez donc les caractères suivants:
En décalant de 10, les caractères commencent à au
a
lieu de0
.Je ne suis pas tout à fait sûr de la vitesse à laquelle l'exécution des deux exemples différents côté client serait comparable.
la source
Le String.fromCharCode de Javascript (code1, code2, ..., codeN) prend un nombre infini d'arguments et renvoie une chaîne de lettres dont les valeurs ASCII correspondantes sont code1, code2, ... codeN. Puisque 97 est «a» en ASCII, nous pouvons ajuster votre indexation en ajoutant 97 à votre index.
la source
Je n'aime pas toutes les solutions qui utilisent des nombres magiques comme
97
ou36
.cela suppose des lettres majuscules et commence «A» à 0.
la source
Utilisez
String.fromCharCode
. Cela renvoie une chaîne à partir d'une valeur Unicode, qui correspond aux 128 premiers caractères de l'ASCII.la source
Là vous allez: (a-zA-Z)
entrée: 0-51, ou il retournera faux (erreur de plage);
OU:
renvoie undefined en cas d'erreur de plage. REMARQUE: le tableau ne sera créé qu'une seule fois et en raison de sa fermeture, il sera disponible pour la nouvelle fonction codeToChar. Je suppose que c'est encore plus rapide que la première méthode (c'est juste une recherche en gros).
la source
Le seul problème avec la grande solution de @ mikemaccana est qu'il utilise l'opérateur binaire >> qui est coûteux, en termes de performances. Je propose cette modification à son excellent travail comme une légère amélioration que vos collègues pourront peut-être lire plus facilement.
Ou en one-liner
Exemple:
la source
Essayer
Afficher l'extrait de code
la source
En supposant que vous vouliez des lettres majuscules:
Exemple:
numberToLetter ('023') est ["A", "C", "D"]
numberToLetter ('5') est "F"
la source