Ask Your Question

Revision history [back]

Here's one possible implementation:

function caesarCipher(str, shift) {
  let result = "";
  for (let i = 0; i < str.length; i++) {
    let code = str.charCodeAt(i);
    if (code >= 65 && code <= 90) { // uppercase
      result += String.fromCharCode(((code - 65 + shift) % 26) + 65);
    } else if (code >= 97 && code <= 122) { // lowercase
      result += String.fromCharCode(((code - 97 + shift) % 26) + 97);
    } else { // special character or space
      result += str.charAt(i);
    }
  }
  return result;
}

console.log(caesarCipher("Hello, World!", 3)); // "Khoor, Zruog!"

This implementation uses a loop to iterate through each character in the input string. For alphabetic characters (uppercase and lowercase), it shifts the character by the specified amount shift using modular arithmetic to wrap around the alphabet. For special characters and spaces, it simply adds them to the result without any encryption. The String.fromCharCode and str.charCodeAt functions are used to convert between characters and their ASCII codes.