我正在尝试编写一个函数,它以ROT13编码的字符串作为输入,并返回解码后的字符串。所有字母均为大写。我不应该转换任何非字母字符(即空格,标点符号),但一定要把它们传下去。我成功地返回了一个解码的字符串,但每个字母都位于原始字母之间。你能告诉我哪里出错了吗?谢谢你。
function rot13(str) {
const splitted = str.split(``)
const regex = /\W+/
let result = []
for(let i=0;i<splitted.length;i++){
if(!regex.test(splitted[i])){
if(splitted[i].charCodeAt()>=65&&splitted[i].charCodeAt()<=77){
result.push(String.fromCharCode(splitted[i].charCodeAt()+13))
}
if(splitted[i].charCodeAt()>=78&&splitted[i].charCodeAt()<=90){
result.push(String.fromCharCode(splitted[i].charCodeAt()-13))}
}
result.push(splitted[i])
}
return result.join(``)
}
//it has to be FREE CODE CAMP
console.log(rot13("SERR PBQR PNZC"))//FSREERER CPOBDQER CPANMZPC
//it has to be FREE PIZZA!
console.log(rot13("SERR CVMMN!")) //FSREERER PCIVZMZMAN!
我试图摆脱原来的字母,在每个if块中使用slice()和replace(),但它不起作用。
1条答案
按热度按时间ibrsph3r1#
尝试使用以下功能