这是一个编码器和解码器函数,它接受一个编码值并返回解码值,它被称为ROT13密码,其中字母的值被移位13位。例如,'A‘↔'N','B’↔'O‘等等。我不知道为什么我的代码不能工作,有人能解释一下吗?下面是我的代码:
function rot13(str) {
for (let i = 0; i < str.length; i++){
let charCode = str.charCodeAt(i);
if (charCode >= 65 && charCode <= 90){
let vary = charCode + 13;
if (vary > 90){
let newVary = vary - 90 - 1 + 65;
str.replace(String.fromCharCode(charCode), String.fromCharCode(newVary));
} else {
str.replace(String.fromCharCode(charCode), String.fromCharCode(vary));
};
};
};
return str;
}; console.log(rot13("SERR PBQR PNZC"));发布于 2021-01-03 04:25:03
str.replace不会直接替换变量。它返回新的字符串。取而代之的是:
str = str.replace(...)发布于 2021-01-03 04:32:47
有几个问题
replace不会更改现有字符串,它会返回修改后的字符串中的后续迭代中修改已经“解码”的字符
function rot13(str) {
let decoded = '';
for (let i = 0; i < str.length; i++) {
let charCode = str.charCodeAt(i);
if (charCode >= 65 && charCode <= 90) {
let vary = charCode + 13;
if (vary > 90) {
let newVary = vary - 90 - 1 + 65;
decoded += String.fromCharCode(newVary)
} else {
decoded += String.fromCharCode(vary)
};
} else {
decoded += String.fromCharCode(charCode)
}
};
return decoded;
};
console.log(rot13("SERR PBQR PNZC"));
https://stackoverflow.com/questions/65543615
复制相似问题