-3

I made this. Can anyone suggest how I can make it shorter without losing its properties? Please keep the English simple.

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"); 
Matt
  • 74,352
  • 26
  • 153
  • 180
aqw alhadary
  • 184
  • 1
  • 10
  • 1
    `"Your string here".replace(/[^a-z]/gi, "").replace(/[a-z]/gi, function(a){return String.fromCharCode(a.charCodeAt(0) + 1)}).replace(/\{/g, "a").replace(/\[/g, "A")` would be a one-liner. If your code is _working_, then ask a specific question on [CodeReview](http://codereview.stackexchange.com/), not here. Instead of filler text, _describe what your function should do_! – Sebastian Simon Jul 31 '16 at 23:24
  • 1
    The answer to your question is "Yes". However, this is not a code-writing service. – Hulk Aug 01 '16 at 05:06
  • I'm voting to close this question as off-topic because it does not appear to be about programming within the scope defined in the [help center](http://stackoverflow.com/help/on-topic). Consider re-asking this question on http://codereview.stackexchange.com, but **include the desired output of the program**. – Matt Aug 17 '16 at 06:58

1 Answers1

1

If I understand correctly, you want to merely return the original string, where each letter has been replaced by the next one in alphabetical order, keeping the same case.

So this will naively do the job:

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));
cFreed
  • 4,404
  • 1
  • 23
  • 33