![](/img/trans.png)
[英]Sublime Linter plugin does not work on windows, greetings from cyrillic alphabet
[英]encrypt alphabet to unicode does not work
這是來自 freecodecamp 的項目,其中一個字符串是通過將字母的值移動 13 個位置來加密的,所有字母都是大寫的。 不要轉換任何非字母字符(即空格、標點符號),但要傳遞它們。 我通過正則表達式測試 numadd numadd 等於 num+13 或 numadd-26。 有些字母出錯了,不返回大寫字母請有人解釋怎么了
function rot13(str) { var str2 = ''; var arr1 = [] var arr2 = [] var reg = /[^AZ]/ // var char if (str.includes(' ') == false) { for (let i = 0; i < str.length; i++) { var char = ''; var numres let num = str.charCodeAt(i) // console.log(num) // var numadd = num + 13; // if num+13 not uppercase if (reg.test(num + 13)) { numres = num - 13 } // if num+13 is uppercase else { numres = num + 13 } char = String.fromCharCode(numres) str2 += char } console.log(str2); } } rot13("SERRPBQRPNZC");
reg.test(num + 13)
檢查數字num + 13
的文本表示(應用隱式類型轉換)所以它總是說True (不匹配大寫字母)並且總是計算numres = num - 13
。
使用reg.test(String.fromCharCode(num + 13))
代替,如下所示:
function rot13(str) { var str2 = ''; var arr1 = [] var arr2 = [] var reg = /[^AZ]/ // var char if (str.includes(' ') == false) { for (let i = 0; i < str.length; i++) { var char = ''; var numres let num = str.charCodeAt(i) // console.log(num) // var numadd = num + 13; // if num+13 not uppercase // ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ if (reg.test(String.fromCharCode(num + 13))) { numres = num - 13 } // if num+13 is uppercase else { numres = num + 13 } char = String.fromCharCode(numres) str2 += char } console.log(str2); } } rot13("SERRPBQRPNZC");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.