如果我在JavaScript中收到一封信,我想按字母顺序查找上一个字母,所以如果输入为“C”,则输出必须为“B”。有没有标准解决方案,还是我必须创建一些特殊功能?
答案 0 :(得分:14)
var ch = 'b';
String.fromCharCode(ch.charCodeAt(0) - 1); // 'a'
如果你想循环使用字母表,只需要专门检查'a' - 如果是'则循环到'z',否则使用上面的方法。
答案 1 :(得分:5)
这应该适用于某些案例,您可能需要稍微调整一下:
function prevLetter(letter) {
return String.fromCharCode(letter.charCodeAt(0) - 1);
}
如果letter
为A
,则结果为@
,因此如果您希望它是万无一失的,则需要添加一些健全性检查。否则应该做好工作。
答案 2 :(得分:5)
Tatu评论的全部功能将是
function prevLetter(letter) {
if (letter === 'a'){ return 'z'; }
if (letter === 'A'){ return 'Z'; }
return String.fromCharCode(letter.charCodeAt(0) - 1);
}
答案 3 :(得分:1)
这样的事情应该有效。
function prevLetter(letter) {
var code = letter.charCodeAt(0);
var baseLetter = "A".charCodeAt(0);
if (code>"Z".charCodeAt(0)) {
var baseLetter = "a".charCodeAt(0);
}
return String.fromCharCode((code-baseLetter+25)%26+baseLetter);
}