मैंने एक अंग्रेजी से मोर्स कोड अनुवादक बनाया है जिसके लिए प्रत्येक मोर्स कोड अक्षर के बीच एक स्थान की आवश्यकता होती है। ऐसा करने के लिए मैंने शब्दकोश में प्रत्येक अक्षर के बाद एक अतिरिक्त स्थान जोड़ा जिसे नीचे देखा जा सकता है। हालांकि, इसका मतलब है कि वाक्य के अंत में एक अतिरिक्त जगह ("") है। क्या इस जगह को हटाने का कोई तरीका है?

मैंने str.slice फ़ंक्शन का उपयोग करने का प्रयास किया है और यह अंतिम अक्षर के पूरे मोर्स कोड संस्करण को हटा देता है।

function morseCode(str) {
morseCode = {
"A": ".- ",
"B": "-... ",
"C": "-.-. ",
"D": "-.. ",
"E": ". ",
"F": "..-. ",
"G": "--. ",
"H": ".... ",
"I": ".. ",
"J": ".--- ",
"K": "-.- ",
"L": ".-.. ",
"M": "-- ",
"N": "-. ",
"O": "--- ",
"P": ".--. ",
"Q": "--.- ",
"R": ".-. ",
"S": "... ",
"T": "- ",
"U": "..- ",
"W": ".-- ",
"X": "-..- ",
"Y": "-.-- ",
"Z": "--.. ",
'1':'.---- ',
'2':'..--- ',
'3':'...-- ',
'4':'....- ',
'5':'..... ',
'6':'-.... ',
'7':'--... ',
'8':'---.. ',
'9':'----. ',}

str = str.replace(/[!,?]/g , '');

str = str.replace(/\s/g, '');

return str.toUpperCase().split("").map(el => {
   return morseCode[el] ? morseCode[el] : el;
}).join("");

};
0
user14607282 11 जिंदा 2021, 01:14

2 जवाब

सबसे बढ़िया उत्तर

चूंकि str.slice फ़ंक्शन एक सबस्ट्रिंग के रूप में दो इंडेक्स के बीच कटा हुआ हिस्सा देता है, आपके मामले में, आपको str.slice(0,-1) का उपयोग करना चाहिए, जो कि str.slice(0, str.length - 1) के बराबर है। और इसका मतलब है कि स्ट्रिंग के अंतिम वर्ण के बिना प्रत्येक वर्ण को शून्य अनुक्रमणिका से वापस करने जा रहा है।

function morseCode(str) {
    morseCode = {
    "A": ".- ",
    "B": "-... ",
    "C": "-.-. ",
    "D": "-.. ",
    "E": ". ",
    "F": "..-. ",
    "G": "--. ",
    "H": ".... ",
    "I": ".. ",
    "J": ".--- ",
    "K": "-.- ",
    "L": ".-.. ",
    "M": "-- ",
    "N": "-. ",
    "O": "--- ",
    "P": ".--. ",
    "Q": "--.- ",
    "R": ".-. ",
    "S": "... ",
    "T": "- ",
    "U": "..- ",
    "W": ".-- ",
    "X": "-..- ",
    "Y": "-.-- ",
    "Z": "--.. ",
    '1':'.---- ',
    '2':'..--- ',
    '3':'...-- ',
    '4':'....- ',
    '5':'..... ',
    '6':'-.... ',
    '7':'--... ',
    '8':'---.. ',
    '9':'----. ',}
    
    str = str.replace(/[!,?]/g , '');
    
    str = str.replace(/\s/g, '');
    
    return str.toUpperCase().split("").map(el => {
       return morseCode[el] ? morseCode[el] : el;
    }).join("").slice(0,-1);  // this returns the string without the last character.
    
};
0
Hector Marin 11 जिंदा 2021, 01:55

उन मानों के लिए रिक्त स्थान शामिल करना एक बुरा अभ्यास है जिनका रिक्ति से कोई लेना-देना नहीं है; मोर्स कोड वर्णों में रिक्त स्थान नहीं होते हैं।

मैं आपको String.prototype.split() का उपयोग करने की सलाह देता हूं, जो भी आपके पास अंग्रेजी वाक्य है, उदाहरण के लिए:

englishSentence.split().map(englishChar => morseCodeChar[englishChar]).join(' ');

आपको अंग्रेजी वाक्य से .toLowerCase() या .toUpperCase() या .filter() खराब वर्णों का उपयोग करना पड़ सकता है।

0
neaumusic 11 जिंदा 2021, 01:20