132 votes

Quelle est une méthode qui peut être utilisée pour incrémenter les lettres ?

Quelqu'un connaît-il une bibliothèque Javascript (par exemple underscore, jQuery, MooTools, etc.) qui offre une méthode pour incrémenter une lettre ?

Je voudrais pouvoir faire quelque chose comme :

"a"++; // would return "b"

4voto

PitaJ Points 4168

En ajoutant à toutes ces réponses :

// first code on page
String.prototype.nextChar = function(i) {
    var n = i | 1;
    return String.fromCharCode(this.charCodeAt(0) + n);
}

String.prototype.prevChar = function(i) {
    var n = i | 1;
    return String.fromCharCode(this.charCodeAt(0) - n);
}

Exemple : http://jsfiddle.net/pitaj/3F5Qt/

4voto

letiagoalves Points 5411

J'avais besoin d'utiliser des séquences de lettres plusieurs fois et j'ai donc créé cette fonction basée sur cette question de l'OS. J'espère que cela pourra aider d'autres personnes.

function charLoop(from, to, callback)
{
    var i = from.charCodeAt(0);
    var to = to.charCodeAt(0);
    for(;i<=to;i++) callback(String.fromCharCode(i));
}
  • de - lettre de démarrage
  • à - dernière lettre
  • callback(lettre) - à exécuter pour chaque lettre du séquence

Comment l'utiliser :

charLoop("A", "K", function(char) {
    //char is one letter of the sequence
});

Voir cette démo fonctionnelle

3voto

NikK Points 66

Celui-ci fonctionne bien :

var nextLetter = letter => {
    let charCode = letter.charCodeAt(0);
    let isCapital = letter == letter.toUpperCase();

    if (isCapital == true) {
        return String.fromCharCode((charCode - 64) % 26 + 65)
    } else {
        return String.fromCharCode((charCode - 96) % 26 + 97)
    }
}

EXAMPLES

nextLetter("a"); // returns 'b'
nextLetter("z"); // returns 'a'
nextLetter("A"); // returns 'B'
nextLetter("Z"); // returns 'A'

2voto

Manoj Rana Points 301

Voici ma fonction pour incrémenter les lettres jusqu'à l'infini en Javascript (pour les majuscules uniquement).

function getNextStringId(str) {
    let index = str.length-1;
    let baseCode= str.charCodeAt(index);
    do{
        baseCode= str.charCodeAt(index);
        let strArr= str.split("");
        if(strArr[index] == "Z"){
            strArr[index] = "A";
            if(index==0){
                strArr.unshift("A");
            }
        }
        else{
            strArr[index]= String.fromCharCode(baseCode + 1);
        }
        str= strArr.join("");
        index--;
    } while(baseCode == 90)
    return str;
}

getNextStringId("A") // B
getNextStringId("Z") // AA
getNextStringId("ABZZ") // ACAA

1voto

mrtyormaa Points 467

C'est vraiment vieux. Mais j'avais besoin de cette fonctionnalité et aucune des solutions n'est optimale pour mon cas d'utilisation. Je voulais générer a, b, c...z, aa,ab...zz, aaa... . Cette récursion simple fait le travail.

function nextChar(str) {
if (str.length == 0) {
    return 'a';
}
var charA = str.split('');
if (charA[charA.length - 1] === 'z') {
    return nextID(str.substring(0, charA.length - 1)) + 'a';
} else {
    return str.substring(0, charA.length - 1) +
        String.fromCharCode(charA[charA.length - 1].charCodeAt(0) + 1);
}
};

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X