You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript凯撒密码实现:如何忽略特殊字符与空格加密

解决JavaScript加密程序保留特殊字符和空格的问题

你的代码目前会把所有输入字符(包括空格、标点这类特殊字符)都进行移位处理,要保留这些非字母字符,只需要在加密逻辑里增加字符类型判断即可。

修改思路

在shiftLetter函数中,先判断当前字符是否为小写字母(因为你已经把输入转成了全小写):

  • 如果是a-z范围内的字母,执行原有的移位加密逻辑
  • 如果不是字母(比如空格、!、@等),直接返回原字符,不做加密

修改后的完整代码

let userInput = prompt("Please enter any text to encrypt it:");
let lowerInput = userInput.toLowerCase();

function startEncryption() {
  let encryptedMessage = "";
  let shift = 15;

  for (letter of lowerInput) {
    encryptedMessage += shiftLetter(letter, shift);
  }  

  console.log(encryptedMessage);
}
startEncryption();

function shiftLetter(letter, shift) {
  let letterCode = letter.charCodeAt(0);
  // 判断是否为小写字母,不是则直接返回原字符
  if (letterCode < 97 || letterCode > 122) {
    return letter;
  }

  let newLetterCode = letterCode + shift;
  // 处理字母循环(超过z或者小于a的情况)
  if (newLetterCode > 122) {
    newLetterCode -= 26;
  } else if (newLetterCode < 97) {
    newLetterCode += 26;
  }

  return String.fromCharCode(newLetterCode);
}

关键修改点说明

  1. 在shiftLetter函数开头新增判断:if (letterCode < 97 || letterCode > 122) { return letter; },直接过滤非字母字符
  2. 原有移位逻辑只对字母生效,空格、数字、标点等都会原样保留

这样修改后,输入中的空格和特殊字符就不会被加密,只会处理a-z的字母。

内容的提问来源于stack exchange,提问作者JadenBotha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 15:23:17