2010-11-04 49 views
8

如果我在JavaScript中得到了一个Letter,我想按照字母顺序找出前一个字母,所以如果输入是“C”,则输出必须是“B”。是否有任何标准解决方案或者我是否需要创建一些特殊功能?Javascript:找出字母表中的前一个字母

+7

这可能与你在做什么并不重要,但请记住,如果你想在国际上正确地做到这一点,下一个/上一个字母的整个业务会非常复杂。下面的解决方案是标准的ASCII /英文为中心的方法,大家几十年来一直在做,但它可能不会满足土耳其或日本... – 2010-11-04 09:11:19

+0

我不得不说,这一个将永远只能用于德语,英语,法语或意大利语,但从不与其他语言和其他字母。也可以说,这不是一个用户输入,所以它与程序一起给出(造船厂,字段名称例如是B4,并且我正在寻找C4) – 2010-12-08 10:03:08

回答

14
var ch = 'b'; 
String.fromCharCode(ch.charCodeAt(0) - 1); // 'a' 

如果你想周围的字母环路只是做了检查专门为“A” - 循环,“Z”如果是这样,否则使用上述方法。

5

这应该在一些箱子工作,你可能需要调整它一点:

function prevLetter(letter) { 
    return String.fromCharCode(letter.charCodeAt(0) - 1); 
} 

如果letterA,其结果是@,所以你需要添加,如果你想要一些健全检查它是万无一失的。否则,应该做的工作就好了。

5

从大肚的评论全功能会

function prevLetter(letter) { 
    if (letter === 'a'){ return 'z'; } 
    if (letter === 'A'){ return 'Z'; } 
    return String.fromCharCode(letter.charCodeAt(0) - 1); 
} 
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); 
} 
相关问题