2016-07-31 6 views
-4

Ich habe das gemacht. Kann jemand vorschlagen, wie ich es kürzer machen kann, ohne seine Eigenschaften zu verlieren? Bitte behalte das Englische einfach.Wie kann ich dieses JavaScript vereinfachen?

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

' "Ihre Zeichenfolge hier" .replace (/ [^ az]/gi, "") .replace (/ [az ]/gi, function (a) {return String.fromCharCode (a.charCodeAt (0) + 1)}). ersetzen (/ \ {/ g, "a"). replace (/ \ [/ g, "A") 'wäre ein One-Liner. Wenn Ihr Code _working_ lautet, stellen Sie eine bestimmte Frage in [CodeReview] (http://codereview.stackexchange.com/), nicht hier. Anstelle von Fülltext, _beschreiben Sie, was Ihre Funktion tun soll_! – Xufox

+1

Die Antwort auf Ihre Frage ist "Ja". Dies ist jedoch kein Code-Schreibdienst. – Hulk

+0

Ich stimme für das Schließen dieser Frage als Off-Topic, weil es nicht um die Programmierung in dem in der [Hilfe-Center] definierten Bereich geht (http://stackoverflow.com/help/on-topic). Stellen Sie sich diese Frage auf http://codereview.stackexchange.com erneut, aber ** fügen Sie die gewünschte Ausgabe des Programms ** hinzu. – Matt

Antwort

1

Wenn ich richtig verstehe, wollen Sie die ursprüngliche Zeichenfolge nur zurück, wo jeder Buchstabe durch die nächsten in alphabetischer Reihenfolge ersetzt wurde, den gleichen Fall zu halten.

So wird dies naiv die Arbeit machen:

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));

Verwandte Themen