FreeCodeCamp凯撒密码(Rot13)代码问题:无法保留空格求排查
凯撒密码(Rot13)代码错误分析与修正
代码存在的三个核心问题:
- 条件判断逻辑错误:
if(temp !== NaN)完全无效,因为temp是字符串字符,永远不可能等于NaN。正确的判断逻辑应该是检查index !== -1——key.indexOf(temp)在找不到对应字符(比如空格、符号)时会返回-1。 - 语法错误:
keyAlph.[index]里多了一个多余的点,正确写法是keyAlph[index]。 - 非字母字符丢失:遇到空格这类不在
key中的字符时,代码没有将其追加到结果里,直接跳过导致空格丢失。需要在字符不在字母表时,直接把原字符加入结果。
修正后的代码:
function rot13(str) { let key = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; let ans = ''; let keyAlph = key.substring(13) + key.substring(0,13); for(let i = 0; i < str.length; i++){ let temp = str.charAt(i); let index = key.indexOf(temp); if(index !== -1){ ans += keyAlph[index]; } else { // 保留空格、符号等非字母字符 ans += temp; } } return ans; }
内容的提问来源于stack exchange,提问作者Sir Dusty
相关产品推荐
相关产品推荐

