Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript JS ROT 13部分工作,但并非全部工作_Javascript_Function - Fatal编程技术网

Javascript JS ROT 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

我不知道在这个函数中我的错误在哪里。它适用于某些字符串,但不适用于所有字符串。你能给我一些建议吗。 我想接受一个字符串,函数应该返回一个字符串+字母表中的13个字符。如果有数字或特殊字符,请按原样打印 因此它适用于
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
,使其环绕。