2016-07-31 108 views
-4

我做了这个。任何人都可以建议我如何使其更短而不失其属性?请保持英语简单。我该如何简化这个JavaScript?

function LetterChanges(str) { 
    var se = ""; 
    for(var i = 0;i < str.length;i++){ 
     var ser = str.charAt(i); 
     if(ser == "A" || ser == "a"){ 
      if(ser == "A"){se += "B"} 
      else {se += "b"} 
     } 
     if(ser == "B" || ser == "b"){ 
      if(ser == "B"){se += "C"} 
      else {se += "c"} 
     } 
     if(ser == "C" || ser == "c"){ 
      if(ser == "C"){se += "D"} 
      else {se += "d"} 
     } 
     if(ser == "D" || ser == "d"){ 
      if(ser == "D"){se += "E"} 
      else {se += "e"} 
     } 
     if(ser == "E" || ser == "e"){ 
      if(ser == "E"){se += "F"} 
      else {se += "f"} 
     } 
     if(ser == "F" || ser == "f"){ 
      if(ser == "F"){se += "G"} 
      else {se += "g"} 
     } 
     if(ser == "G" || ser == "g"){ 
      if(ser == "G"){se += "H"} 
      else {se += "h"} 
     } 
     if(ser == "H" || ser == "h"){ 
      if(ser == "H"){se += "I"} 
      else {se += "i"} 
     } 
     if(ser == "I" || ser == "i"){ 
      if(ser == "I"){se += "J"} 
      else {se += "j"} 
     } 
     if(ser == "J" || ser == "j"){ 
      if(ser == "J"){se += "K"} 
      else {se += "k"} 
     } 
     if(ser == "K" || ser == "k"){ 
      if(ser == "K"){se += "L"} 
      else {se += "l"} 
     } 
     if(ser == "L" || ser == "l"){ 
      if(ser == "L"){se += "M"} 
      else {se += "m"} 
     } 
     if(ser == "M" || ser == "m"){ 
      if(ser == "M"){se += "N"} 
      else {se += "n"} 
     } 
     if(ser == "N" || ser == "n"){ 
      if(ser == "N"){se += "O"} 
      else {se += "o"} 
     } 
     if(ser == "O" || ser == "o"){ 
      if(ser == "O"){se += "P"} 
      else {se += "p"} 
     } 
     if(ser == "P" || ser == "p"){ 
      if(ser == "P"){se += "Q"} 
      else {se += "q"} 
     } 
     if(ser == "Q" || ser == "q"){ 
      if(ser == "Q"){se += "R"} 
      else {se += "r"} 
     } 
     if(ser == "R" || ser == "r"){ 
      if(ser == "R"){se += "S"} 
      else {se += "s"} 
     } 
     if(ser == "S" || ser == "s"){ 
      if(ser == "S"){se += "T"} 
      else {se += "t"} 
     } 
     if(ser == "T" || ser == "t"){ 
      if(ser == "T"){se += "U"} 
      else {se += "u"} 
     } 
     if(ser == "U" || ser == "u"){ 
      if(ser == "U"){se += "V"} 
      else {se += "v"} 
     } 
     if(ser == "V" || ser == "v"){ 
      if(ser == "V"){se += "W"} 
      else {se += "w"} 
     } 
     if(ser == "W" || ser == "w"){ 
      if(ser == "W"){se += "X"} 
      else {se += "x"} 
     } 
     if(ser == "X" || ser == "x"){ 
      if(ser == "X"){se += "Y"} 
      else {se += "y"} 
     } 
     if(ser == "Y" || ser == "y"){ 
      if(ser == "Y"){se += "Z"} 
      else {se += "z"} 
       if(ser == "Z" || ser == "z"){ 
      if(ser == "Z"){se += "A"} 
      else {se += "a"} 
     } 
    } 

    return se; 
    } 

    LetterChanges("Argument Goes Here"); 
+1

' “你的字符串这里” .replace(/ [^ AZ]/GI, “”).replace(/ [AZ ]/gi,function(a){return String.fromCharCode(a.charCodeAt(0)+ 1)})。replace(/ \ {/ g,“a”)。replace(/ \ [/ g,“A” )'将是一个单线程。如果你的代码是_working_,那么在[CodeReview](http://codereview.stackexchange.com/)上提出一个具体问题,而不是在这里。 _描述你的函数应该做什么_而不是填充文本__! – Xufox

+1

你的问题的答案是“是”。但是,这不是一个代码写入服务。 – Hulk

+0

我投票结束这个问题作为题外话题,因为它似乎不是关于[帮助中心](http://stackoverflow.com/help/on-topic)中定义的范围内的编程。考虑在http://codereview.stackexchange.com上重新提出这个问题,但**包含程序**的所需输出。 – Matt

回答

1

如果我理解正确的,你想只返回原始的字符串,其中每个字母被替换按字母顺序排列的下一个,保持相同的情况下。

所以这会天真地做工作:

function letterChange(str) { 
 
    var alphabet = 
 
    'ABCDEFGHIJKLMNOPQRSTUVWXYZ' + 
 
    'abcdefghijklmnopqrstuvwxyz', 
 
    result = ''; 
 
    for (var i = 0, n = str.length; i < n; i++) { 
 
    var pos = alphabet.indexOf(str.charAt(i)) + 1; 
 
    if (pos == 26 || pos == 52) { 
 
     pos -= 26; 
 
    } 
 
    result += alphabet[pos]; 
 
    } 
 
    return result; 
 
} 
 
var example = 'ABJKYZabjkyz'; 
 
console.log(example, '->', letterChange(example));