2010-11-04 10 views
8

यदि मुझे जावास्क्रिप्ट में एक पत्र मिला है, तो मैं पिछले अक्षर को वर्णमाला क्रम में ढूंढना चाहता हूं, इसलिए यदि इनपुट "सी" है, तो आउटपुट "बी" होना चाहिए। क्या कोई मानक समाधान है या क्या मुझे कुछ विशेष कार्य करना है?जावास्क्रिप्ट: वर्णमाला में पिछले अक्षर का पता लगाएं

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

हैं letterA है, परिणाम, @ है, इसलिए आप कुछ विवेक जाँच अगर आप चाहते हैं जोड़ने की जरूरत:

+7

यह शायद आप क्या कर रहे हैं कोई फर्क नहीं पड़ता है, लेकिन यह ध्यान रखें कि अगले/पिछले पत्र के पूरे व्यापार बहुत जटिल है अगर आप इसे ठीक से करने के लिए कोशिश कर रहे हैं अंतरराष्ट्रीय स्तर पर। नीचे दिए गए समाधान मानक ASCII/अंग्रेजी-केंद्रित दृष्टिकोण हैं जो हर कोई दशकों से कर रहा है, लेकिन जो शायद तुर्की या जापान में संतुष्ट नहीं होगा ... –

+0

मुझे यह कहना है कि यह कभी भी जर्मन, अंग्रेजी में उपयोग किया जाएगा , फ्रेंच या इतालवी, लेकिन अन्य अक्षरों के साथ कभी दूसरी भाषा के साथ नहीं। और यह भी कहने के लिए, यह उपयोगकर्ता-इनपुट नहीं है, इसलिए इसे प्रोग्राम के साथ दिया जाता है (शिपयार्ड, फील्डनाम जैसे बी 4, और मैं सी 4 की तलाश में था) –

उत्तर

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

और अगर आप सिर्फ विशेष रूप से 'एक' के लिए एक जांच वर्णमाला के आसपास पाश करना चाहता था - 'z' को पाश अगर ऐसा है, अन्यथा विधि से ऊपर का उपयोग करें।

5

यह कुछ मामलों में काम करना चाहिए, आप इसे थोड़ा बदलाव करने की आवश्यकता हो सकती यह मूर्खतापूर्ण होना है। अन्यथा नौकरी सिर्फ ठीक करना चाहिए।

5

Tatu की टिप्पणी से पूर्ण समारोह हो

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); 
} 
संबंधित मुद्दे