我试图用字母表中跟在它后面的字母替换字符串中的每个字母。
例子:
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”,有人可以帮我解决吗?
谢谢。
让我们看看代码将如何处理 input cod:
c,字母表中的下一个字母是d,替换c为d,结果是dodo,字母表中的下一个字母是p,替换o为p,结果是dpdd,字母表中的下一个字母是e,替换d为e,结果是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在这种情况下,您可能想回到字母表的开头并替换它。
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)