JavaScript 将字符串中的每个字母替换为字母错误中紧随其后的字母

Jac*_*kie 4 javascript

我试图用字母表中跟在它后面的字母替换字符串中的每个字母。

例子:

a -> b  
b -> c  
c -> d  
Run Code Online (Sandbox Code Playgroud)

等等。

a -> b  
b -> c  
c -> d  
Run Code Online (Sandbox Code Playgroud)

所以我测试的是一些字符串输入,我在“cod”上出错,我的代码返回“epd”而不是“dpe”,有人可以帮我解决吗?

谢谢。

Boh*_*rdt 6

让我们看看代码将如何处理 input cod

  • 过程c,字母表中的下一个字母是d,替换cd,结果是dod
  • 过程o,字母表中的下一个字母是p,替换op,结果是dpd
  • 过程d,字母表中的下一个字母是e,替换de,结果是epd

您看到第 3 步的错误了吗?replace以您使用它的方式替换该字母的第一次出现。一种解决方案是通过向其附加下一个字母来创建新字符串。例如:

var newString = '';
for (var i = 0; i < str.length; i++) {
    if (96 < str.charCodeAt(i) && str.charCodeAt(i) < 123) {
        newString += String.fromCharCode(str.charCodeAt(i) + 1);
    }
 }
 return newString;
Run Code Online (Sandbox Code Playgroud)

顺便说一句,您的代码也有一个微妙的错误。如果您的字符串包含z它将被替换为{. a在这种情况下,您可能想回到字母表的开头并替换它。


win*_*elt 0

str在循环时进行更改并不是一个好主意。

这是可以使用的改编功能。

function LetterChanges(str) {
    var strOut='';
    for (var i = 0; i < str.length; i++) {
        if (96 < str.charCodeAt(i) && str.charCodeAt(i) < 123) {
            strOut += String.fromCharCode(str.charCodeAt(i) + 1);
        }
    }
    return strOut;
}
Run Code Online (Sandbox Code Playgroud)