Thomas Zilliox
Expert CSS Freelance à Lyon

Décaler des lettres dans l’alphabet en JavaScript

Nous avons vu comment convertir des lettres en nombres et comment convertir des nombres en lettres en JavaScript dans des articles précédent. Ici, nous allons compiler les deux techniques pour permettre de décaler une lettre de n positions dans l’alphabet.

/**
 * Returns the shifted letter of an offset in the alphabet
 *
 * @param {string} letter
 * @param {number} offset
 * @return {number} The shifted letter
 */
function shiftLetter(letter, offset) {
  if (!isLetterInAlphabet(letter)) {
    return letter;
  }

  return numberToLetter(letterToNumber(letter) + offset);
}
Voir les dépendances
const alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ".split("");

// See https://tzi.fr/js/convertir-lettres-en-nombres/
function letterToNumber(letter) {
  if (!isLetterInAlphabet(letter)) {
    return false;
  }

  return alphabet.indexOf(letter.toUpperCase()) + 1;
}
function isLetterInAlphabet(letter) {
  return alphabet.includes(letter.toUpperCase());
}

// See https://tzi.fr/js/convertir-nombres-en-lettres/
function numberToLetter(position) {
  return getLetterByAlphabeticPosition(
    moduloClamp(position, 1, alphabet.length)
  );
}
function getLetterByAlphabeticPosition(position) {
  if (position < 1 || position > alphabet.length) {
    return false;
  }

  return alphabet[position - 1];
}

// See https://tzi.fr/js/modulos-min-max
function moduloClamp(number, min, max) {
  return positiveModulo(number - min, max + 1 - min) + min;
}

// See https://tzi.fr/js/modulos-positifs
function positiveModulo(number, divisor) {
  return ((number % divisor) + divisor) % divisor;
}

Exemples

shiftLetter("a", 0); // "A"
shiftLetter("a", 1); // "B"
shiftLetter("a", 25); // "Z"
shiftLetter("a", 26); // "A"
shiftLetter("a", -52); // "A"
shiftLetter("A", 1); // "B"

Essayez


console.log(shiftLetter('A', 0));
console.log(shiftLetter('A', 1));
console.log(shiftLetter('A', -1));

Joyeux Noël 🎄, Thomas.

That's my face!

Thomas ZILLIOX

Je suis Thomas Zilliox, l'homme qui murmurait à l'oreille des chevrons, un développeur CSS freelance sur Lyon.

Je suis aussi le co-créateur de la société Zupple qui crée, organise, et anime des team building et escape games à Lyon.