碎片時(shí)間學(xué)編程「66]:使用凱撒密碼加密或解密給定的字符串

使用模 (?%) 運(yùn)算符和三元運(yùn)算符 (??) 計(jì)算正確的加密/解密密鑰。

使用擴(kuò)展運(yùn)算符 (?...) 和Array.prototype.map()遍歷給定字符串的字母。

使用String.prototype.charCodeAt() 和 String.fromCharCode()適當(dāng)?shù)剞D(zhuǎn)換每個(gè)字母,忽略特殊字符、空格等。

使用Array.prototype.join()將所有字母組合成一個(gè)字符串。

傳遞true給最后一個(gè)參數(shù) ,decrypt以解密加密字符串。

JavaScript

const caesarCipher = (str, shift, decrypt = false) => {

? const s = decrypt ? (26 - shift) % 26 : shift;

? const n = s > 0 ? s : 26 + (s % 26);

? return [...str]

? ? .map((l, i) => {

? ? ? const c = str.charCodeAt(i);

? ? ? if (c >= 65 && c <= 90)

? ? ? ? return String.fromCharCode(((c - 65 + n) % 26) + 65);

? ? ? if (c >= 97 && c <= 122)

? ? ? ? return String.fromCharCode(((c - 97 + n) % 26) + 97);

? ? ? return l;

? ? })

? ? .join('');

};

示例

caesarCipher('Hello World!',-3);// 'Ebiil Tloia!'

caesarCipher('Ebiil Tloia!',23,true);// 'Hello World!'

更多內(nèi)容請(qǐng)?jiān)L問(wèn)我的網(wǎng)站:https://www.icoderoad.com

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容