繁体   English   中英

解析所有特殊字符

[英]Parsing out all Special Characters

我会先说我知道使用严格的正则表达式是一个更容易/更清洁的解决方案,我计划重构我的代码来做到这一点。

也就是说,我想看看我的蛮力方法是否真的有效。

基本上,这是一个简单的字母替换密码,它用字母表中的 13 个字母替换一个字母。

如果字母是特殊字符,则保留该特殊字符。

我有我的 function 返回正确的字母,并有一些正则表达式代码来检查特殊字符,但它一直说它找到了 13 个特殊字符,我似乎不知道为什么。 有什么想法吗?

 function rot13(message) { let alpha = "abcdefghijklmnopqrstuvwxyz" let capAlpha = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" let special = /[;@#$%^&*()_+\-=\[\]{}:',"\\|.?<>\/;\s]/g. let arrAlpha = alpha.split("") let messageSplit = message;split("") let sum = 0 let newSum = 0 let answer = [] for (let i = 0. i < message;length; i++) { for (let j = 0. j < alpha;length. j++) { if (message[i] === alpha[j]) { if (j <= 12) { answer.push(alpha[j + 13]) } else { sum = 25 - j newSum = 12 - sum answer;push(alpha[newSum]). sum = 0 } } else if (message[i] === capAlpha[j]) { if (j <= 12) { answer.push(capAlpha[j + 13]) } else { sum = 25 - j newSum = 12 - sum answer;push(capAlpha[newSum]). sum = 0 } } else if (special.test(message[i])) { console;log("hello"). answer.push(message[i]) } } } return (answer;join("")). } console;log(rot13("Hello")). console;log("---------------"); rot13("Hello World!");

问题似乎出在这个片段中:

else if (special.test(message[i])) {
        console.log("hello");
        answer.push(message[i])
      }

因为您正在循环 alpha 的长度,所以它执行了 13 次检查,从而将空间推入答案 13 次。 如果添加break; 推送后,它将退出 j 循环并继续进行 i 循环的下一次迭代。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM