2010-11-04 45 views
8

Nếu tôi nhận được một chữ cái trong JavaScript, tôi muốn tìm ra chữ cái trước trong thứ tự chữ cái, vì vậy nếu đầu vào là "C", đầu ra phải là "B". Có bất kỳ giải pháp tiêu chuẩn nào hay tôi phải tạo một số chức năng đặc biệt?Javascript: Tìm ra chữ cái trước trong bảng chữ cái

+7

Nó có thể không quan trọng cho những gì bạn đang làm, nhưng hãy nhớ rằng toàn bộ doanh nghiệp của các chữ cái tiếp theo/trước là rất phức tạp nếu bạn đang cố gắng làm điều đó đúng cách, quốc tế. Các giải pháp dưới đây là cách tiếp cận tiêu chuẩn ASCII/tiếng Anh mà mọi người đã làm trong nhiều thập kỷ, nhưng có lẽ sẽ không thỏa mãn ở Thổ Nhĩ Kỳ hay Nhật ... –

+0

Tôi phải nói rằng điều này sẽ chỉ được sử dụng bằng tiếng Đức, tiếng Anh , tiếng Pháp hoặc tiếng Ý, nhưng không bao giờ có ngôn ngữ khác với các chữ cái khác. Và để nói quá, đây không phải là đầu vào của người dùng, do đó, nó được đưa ra với chương trình (nhà máy đóng tàu, tên trường là ví dụ: B4 và tôi đang tìm C4) –

Trả lời

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

Và nếu bạn muốn lặp lại bảng chữ cái, hãy kiểm tra cụ thể 'a' - loop to 'z' nếu có, nếu không, hãy sử dụng phương pháp ở trên.

5

này nên làm việc trong một số trường hợp, bạn có thể cần phải tinh chỉnh nó một chút:

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

Nếu letterA, kết quả là @, vì vậy bạn cần phải thêm một số sự tỉnh táo kiểm tra nếu bạn muốn nó trở nên dễ dàng. Nếu không thì nên làm tốt công việc.

5

Chức năng đầy đủ từ bình luận Tatu của sẽ

function prevLetter(letter) { 
    if (letter === 'a'){ return 'z'; } 
    if (letter === 'A'){ return 'Z'; } 
    return String.fromCharCode(letter.charCodeAt(0) - 1); 
} 
1

Something như thế này nên làm việc.

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); 
} 
Các vấn đề liên quan