Javascript中的实时摩尔斯电码转换器

前端之家收集整理的这篇文章主要介绍了Javascript中的实时摩尔斯电码转换器前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在看到谷歌愚蠢的莫尔斯代码gmail笑话后,我想我会尝试在 javascript中创建一个实时莫尔斯代码转换器.

我正在使用正则表达式并替换以将莫尔斯代码更改为字符.例如:

.replace(/.- /g,"a").replace(/.-. /g,"r")

我遇到的问题是当我打字时.-.对于“r”,它给了我一个“a”,因为它看到了.-首先.
我怎样才能让它只替换完全匹配?

更新和工作!!感谢每一位帮助我的人

http://jsfiddle.net/EnigmaMaster/sPDHL/32/ – 我的原始代码

http://jsfiddle.net/EnigmaMaster/LDKKE/6/ – 由Shawn Chin改写

http://jsfiddle.net/EnigmaMaster/y9A4Y/2/ – 由Matthias Tylkowski改写

如果有人有其他方式撰写此计划,请发布JsFiddle

我很想知道如何做到这一点

解决方法

其他答案已经涵盖了你的例子没有工作的原因所以我不会重复它们.

但是,我可以建议,因为您已经使用空格来划分每个代码,所以直接的解决方案是使用简单的.split()将输入文本分段为单个单元然后简单地进行一对一代码映射到字符.
这比重复的正则表达式替换更有效,并且不容易出错.

例如:

var morse = {  // use object as a map
    '.-': 'a','-...': 'b','-.-.': 'c',// .... the rest ...
};

function translate_morse(code) {  // given code,return matching char
    return (typeof morse[code] === "undefined") ? "" : morse[code];
    // if the var is not found,the code is unknown/invalid. Here we 
    // simply ignore it but you could print out the code verbatim and use
    // different font styles to indicate an erroneous code
}

// example usage
translated = code_text.split(" ").map(translate_morse).join("");

这是一个有效的例子:http://jsfiddle.net/KGVAm/1/

附:我冒昧地调整了代码和行为,即禁用其他字符的输入,但允许backscape允许更正.

猜你在找的JavaScript相关文章