const rl = require("readline").createInterface({ input: process.stdin, output: process.stdout, }); var iter = rl[Symbol.asyncIterator](); const readline = async () => (await iter.next()).value; // 加密 function decode(str) { const decodeArr = str.split(""); const len = decodeArr.length; let result = JSON.parse(JSON.stringify(decodeArr)); for (let i = 0; i < len; i++) { let item = decodeArr[i]; if (!isNaN(item)) { if (parseInt(item) == 9) { result[i] = "0"; } else { result[i] = String(parseInt(item) + 1); } } else { if (item == "z") { result[i] = "A"; } else if (item == "Z") { result[i] = "a"; } else { // 判断大小写 if (item.charCodeAt() >= 97) { // 小写 // 转大写 减31 result[i] = String.fromCharCode( result[i].charCodeAt() - 31 ); } else { // 大写 // 转小写 加33 result[i] = String.fromCharCode( result[i].charCodeAt() + 33 ); } } } } return result.join(""); } // 解密 加密逆过程 function encode(str) { const encodeArr = str.split(""); const len = encodeArr.length; let result = encodeArr; for (let i = 0; i < len; i++) { let item = encodeArr[i]; if (!isNaN(item)) { // 数字 if (parseInt(item) == 0) { result[i] = "9"; } else { result[i] = String(parseInt(item) - 1); } } else { if (item == "A") { result[i] = "z"; } else if (item == "a") { result[i] = "Z"; } else { // 判断大小写 if (item.charCodeAt() >= 97) { // 小写 // 转大写 减33(往后) result[i] = String.fromCharCode( item.charCodeAt() - 33 ); } else { // 大写 // 转大写 加31 result[i] = String.fromCharCode( item.charCodeAt() + 31 ); } } } } return result.join(""); } void (async function () { let len = 1; while ((line = await readline())) { // 处理输入出现问题 let result = ""; if (len == 1) { result += decode(line); } else { result += encode(line); } console.log(result); len++; // 加解密 // 1.判断当前字母大小写 // 2.按规则进行变换 // 2.1 规则 // 2.1.1加密 // 小写转大写 -31 // 大写转小写 +31 // 2.1.2解密 // 小写转大写 +31 // 大写转小写 -31 // 3.注意边界条件 // 3.1 9-> 0 // 3.2 z->A(-57) Z->a(+7) } })();