我最近为Morse代码翻译器创建了一个文本,该文本已经成功,但我现在正试图将其转换为Morse解码器(Morse to text)。然而,应该翻译成字母的点和短划线(例如:在翻译中键入" .-"应该给出" a"作为结果)不是工作,相反,它给了我" e"和" t" ("。"莫尔斯是" e"," - "莫尔斯是" t")。我假设由于键侧的几个字符而发生错误
var map = {" key1":" obj1"," key2":" obj2"}
这是我对解码器的当前代码:
<html>
<center><h3>Write Morse code:<br/></h3>
<input id='inp' />
<button id='butt'>Decode</button>
<br><br>Result: <input size="34" type="text" id="out" name="morse" readonly/></center>
<script src='script.js'></script>
<script>var morse = {
'.-': 'a',
'-...': 'b',
'-.-.': 'c',
'-..': 'd',
'.': 'e',
'..-.': 'f',
'--.': 'g',
'....': 'h',
'..': 'i',
'.---': 'j',
'-.-': 'k',
'.-..': 'l',
'--': 'm',
'-.': 'n',
'---': 'o',
'.--.': 'p',
'--.-': 'q',
'.-.': 'r',
'...': 's',
'-': 't',
'..-': 'u',
'...-': 'v',
'.--': 'w',
'-..-': 'x',
'-.--': 'y',
'--..': 'z',
'-----': '0',
'.----': '1',
'..---': '2',
'...--': '3',
'....-': '4',
'.....': '5',
'-....': '6',
'--...': '7',
'---..': '8',
'----.': '9',
'.--.-': 'à',
'.--.-': 'å',
'.-.-': 'ä',
'----': 'ch',
'.-..-': 'è',
'..-..': 'é',
'---.': 'ö',
'..--': 'ü',
'...--..': 'ß',
'--.--': 'ñ',
'.-.-.-': '.',
'--..--': ',',
'---...': ':',
'-.-.-.': ';',
'..--..': '?',
'-....-': '-',
'..--.-': '_',
'-.--.': '(',
'-.--.-': ')',
'.----.': '\'',
'-...-': '=',
'.-.-.': '+',
'-..-.': '/',
'.--.-.': '@'
};
var inp = document.getElementById('inp');
var butt = document.getElementById('butt');
var out = document.getElementById('out');
butt.addEventListener('click', function () {
var conv = inp.value;
conv = conv.toLowerCase();
conv = conv.split('');
for (var i = 0; i < conv.length; i++) {
if (window.CP.shouldStopExecution(1)) {
break;
}
conv[i] = morse[conv[i]];
}
window.CP.exitedLoop(1);
conv = conv.join(' ');
console.log(conv);
out.value = conv;
});
</script>
</body></html>
&#13;
更新: 对于具有相同问题的任何人,错误都是由&#34; conv = conv.split(&#39;&#39;)&#34;引起的。为了解决这个问题,Niet the Dark Absol和Ali7091建议我将其更改为&#34; conv = conv.split(&#39;&#39;)&#34;,在&#39;&之间增加空格#39;