0

問題は、文字列を取得し、文字列の各文字のアルファベットの次の文字を返すことでした。例のために。「kick ass」は「ljdl btt」を返すはずです。このコードを書きましたが、機能しません。おそらく誰かが私のエラーを見つけることができますか?

function LetterChanges(str) { 

  var LetterChanges = "";     
  var stringlength = str.length-1;
  var strAlpha = "abcdefghijklmnopqrstuvwxyz";
  for (var i=0; i<strAlpha.length; i++) {
     if (strAlpha < strAlpha[i].length){
       LetterChanges += strAlpha[i] +1;
      }                
  return str; 
  } 
}

LetterChanges("hello there");         
4

6 に答える 6

5

これは、正規表現と を使用して簡単に実行できますreplace

var str = 'kick azZ'.replace(/[a-z]/gi, function(c){
  if (c=='z') return 'a';
  if (c=='Z') return 'A';
  return String.fromCharCode(c.charCodeAt(0) + 1);
});

console.log(str); //= "ljdl baA"
于 2013-07-02T06:29:41.670 に答える
0

文字列操作を使用して変更された elanrs ソリューション。文字列が小さい場合はこれを避けてください (正規表現、elanrs ソリューションを使用してください)。

var str = 'kick azz';
var rStr = "";
var t = str.split(' ');
for (var i = 0; i < t.length; i++) {
    var x = t[i];
    if (i > 0) {
        rStr += " ";
    }
    for (var j = 0; j < x.length; j++) {
        var k = String.fromCharCode(x[j].charCodeAt(0) + 1);
        if (x[j] == "z") {
            k = "a";
        } else if (x[j] == "Z") {
            k = "A";
        }
        rStr += k;
    }
    t[i] = x;
}
str = rStr;
console.log(str); //= "ljdl btt"

働くフィドル

jsperf

于 2013-07-02T07:05:43.907 に答える
0

ナイスエクササイズ!見てみな:

function LetterChanges(str) { 

  var result = [],
      strAlpha = "abcdefghijklmnopqrstuvwxyz";

    for(var i=str.length;i--;){
        var char = str[i],
            strIndex = strAlpha.indexOf(char),
            newIndex = (strIndex <  strAlpha.length-1) ? strIndex +1 : 0;

        result.unshift(strAlpha[newIndex]);
    }

    return result.join('');
}

alert(LetterChanges("hello there"));

フィドル: http://jsfiddle.net/H5Etv/1/

おそらく、スペースを正しく処理するコードを追加するだけで済みます。

于 2013-07-02T06:36:41.487 に答える
0
function LetterChanges(str) { 

  var LetterChanges = "";     
  var stringlength = str.length-1;
  var strAlpha = "abcdefghijklmnopqrstuvwxyz";
  var n = 0;
  for (var i=0; i<stringlength; i++) {
     if(str[i] != ' ') {
     n=strAlpha.indexOf(str[i]);
     LetterChanges += strAlpha[n+1];
     }else{
     LetterChanges += ' ';
     }   
  }    
   return LetterChanges; 

}

document.write(LetterChanges("hello there"));
于 2013-07-02T06:40:06.390 に答える
0

現在の機能には多くの問題があります。これは、あなたが始めるのに少し良いものです:

var alphabet = "abcdefghijklmnopqrstuvwyz";

function translate(str) {
    var result = "";

    for (var i = 0; i < str.length; i++) {
        var char = str.charAt(i);
        var index = alphabet.indexOf(char);

        // You'll have to find the next character in alphabet
        // Use the modulo operator (%) to handle "z" -> "a"

        result += nextChar;
    }

    return result;
}
于 2013-07-02T06:32:02.693 に答える