【发布时间】:2021-11-27 12:16:52
【问题描述】:
我是初学者,想制作自己的功能。 我想通过将每个字符移动给定 x 来散列密码 位置并反转为小写/大写。
我认为下面的代码应该返回“EFGH7654”,但它返回 55 且没有错误消息。 我该如何解决?是因为我把一个函数放在一个函数中吗? 还是我打错了什么?
function hashPassword(password, x) {
// password is a string, x is a number
// return a string
// (ex. password = 'ab1By', x = 3 so it should return "DE4eB")
function shift(text, s) {
result = "";
for (let i = 0; i < text.length; i++) {
let char = text[i];
if (char.toUpperCase(text[i])) {
let ch = String.fromCharCode((char.charCodeAt(0) + s - 65) % 26 + 65);
result += ch;
} else {
let ch = String.fromCharCode((char.charCodeAt(0) + s - 97) % 26 + 97);
result += ch;
}
}
return result;
}
function reversecase(x) {
var output = '';
for (var i = 0, len = x.length; i < len; i++) {
var character = x[i];
if (character == character.toLowerCase()) {
// The character is lowercase
output = output + character.toUpperCase();
} else {
// The character is uppercase
output = output + character.toLowerCase();
}
}
return output
}
var str = "";
var result = "";
var charcode = "";
for (var i = 0; i < password.length; i++) {
if (typeof password[i] === typeof str) {
char = shift(password[i], x)
charcode = reversecase(char)
result += charcode;
} else {
num = password[i] + x
number = num % 10
result += number.toString()
}
}
return result
};
console.log(hashPassword("abcd4321", 4))
【问题讨论】:
-
reverse to lowercase/uppercase- 如果是这样,预期的输出不应该是EFGH7654
标签: javascript string hash caesar-cipher