2016-07-31 70 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));