我想要一个可以从A到B,B到C,从Z到A的功能。
我的功能目前是这样的:
function nextChar(c) {
return String.fromCharCode(c.charCodeAt(0) + 1);
}
nextChar('a');
适用于A到X,但是当我使用Z时,它会转到[而不是A。
答案 0 :(得分:4)
您可以parseInt
使用radix
36,使用相反的方法Number#toString
使用相同的基数,并对值进行修正。
function nextChar(c) {
var i = (parseInt(c, 36) + 1 ) % 36;
return (!i * 10 + i).toString(36);
}
console.log(nextChar('a'));
console.log(nextChar('z'));

答案 1 :(得分:2)
简单的条件。
function nextChar(c) {
var res = c == 'z' ? 'a' : c == 'Z' ? 'A' : String.fromCharCode(c.charCodeAt(0) + 1);
console.log(res);
}
nextChar('Z');
nextChar('z');
nextChar('a');

答案 2 :(得分:2)
function nextLetter(s){
return s.replace(/([a-zA-Z])[^a-zA-Z]*$/, function(a){
var c= a.charCodeAt(0);
switch(c){
case 90: return 'A';
case 122: return 'a';
default: return String.fromCharCode(++c);
}
});
}
console.log("nextLetter('z'): ", nextLetter('z'));
console.log("nextLetter('Z'): ", nextLetter('Z'));
console.log("nextLetter('x'): ", nextLetter('x'));

答案 3 :(得分:2)
function nextChar(c) {
return String.fromCharCode((c.charCodeAt(0) + 1 - 65) % 25) + 65);
}
其中65代表ASCII表中0的偏移量,25表示在第25个字符后它将从头开始(偏移字符代码除以25,你得到的余数偏回到正确的ASCII代码)