Javascript JS ROT 13部分工作,但并非全部工作
我不知道在这个函数中我的错误在哪里。它适用于某些字符串,但不适用于所有字符串。你能给我一些建议吗。 我想接受一个字符串,函数应该返回一个字符串+字母表中的13个字符。如果有数字或特殊字符,请按原样打印 因此它适用于Javascript JS ROT 13部分工作,但并非全部工作,javascript,function,Javascript,Function,我不知道在这个函数中我的错误在哪里。它适用于某些字符串,但不适用于所有字符串。你能给我一些建议吗。 我想接受一个字符串,函数应该返回一个字符串+字母表中的13个字符。如果有数字或特殊字符,请按原样打印 因此它适用于rot13(“aaaabb55”),但不适用于rot13(“父4”) 谢谢你的帮助 function rot13(message) { var ceasar = message.toLowerCase().split(""); var alpha = "abcdefghijkl
rot13(“aaaabb55”)
,但不适用于rot13(“父4”)
谢谢你的帮助
function rot13(message) {
var ceasar = message.toLowerCase().split("");
var alpha = "abcdefghijklmnopqrstuvwxyz".split("");
for (i = 0; i < ceasar.length; i++) {
var letter = ""
if (ceasar[i].match(/[a-z]/gi)) {
letter = alpha.indexOf(ceasar[i])
ceasar[i] = alpha[letter + 13]
} else {
continue
};
}
return ceasar.join("")
}
功能rot13(消息){
var ceaar=message.toLowerCase().split(“”);
var alpha=“abcdefghijklmnopqrstuvxyz”。拆分(“”);
对于(i=0;i
如下所述:
将
字母+13
更改为(字母+13)%alpha.length
,使其环绕
基本上,ceaar[i]=alpha[letter+13]
行的问题在于,当字母位于字母表的中点之后时,letter+13
将导致索引越界。例如,father
中的字母t
,对应于索引19(基于0的索引)。19+13=32,与alpha
中的字母不对应
将模块运算符与
(字母+13)%alpha.length一起使用将32“包装”回6,这将是字母g
欢迎使用SO<代码>字母+13
…例如,如果ceaar[i]
是z
,会发生什么<代码>否则继续是多余的。循环自动继续。将字母+13
更改为(字母+13)%alpha.length
,使其环绕。