使用 javascript 替换字符的字符 ()

Character for character replace() using javascript

我正在尝试为字符翻译器创建一个类似于 Google Translate 的字符,但对于 Chars,有点像解码器。这是我目前所拥有的,但我被困在 JavaScript 的最后一行附近。我不知道我需要用 replacement 变量

为 replace() 方法的后半部分添加什么
<form>

    <textarea class="form-control" id="englishform" onkeyup="replacer('englishform')" onkeydown="replacer('englishform')" placeholder="Enter English" rows="15"></textarea><br />
</form>
<form>
    <textarea  class="form-control" id="albhedform" placeholder="Enter Al Bhed" rows="15"></textarea>
</form>


<script type="text/javascript">
function replacer(e){
    var replacement = ['y', 'p', 'l', 't', 'a', 'v', 'k', 'r', 'e', 'z', 'g', 'm', 's', 'h', 'u', 'b', 'x', 'n', 'c', 'd', 'i', 'j', 'f', 'q', 'o', 'w']; 
    var english = document.getElementById(e);
    var albhed = document.getElementById('albhedform');
    albhed.value = english.value.replace(/[a-z]/gi, replacement/*here is the issue */); 
}
</script>

所以问题出在 replace() 方法的后半部分。我似乎无法使用 "c => replacement[c.toLowerCase().charCodeAt(0) - 97]"

将正则表达式括号替换为字母
albhed.value = english.value.replace(/[a-z]/gi, c => replacement[c.toLowerCase().charCodeAt(0) - 97]

有人可以解释一下需要修复的地方吗?

您在 fiddle 上的代码完全没问题。你只需要将语言更改为 Babel + JSX 并删除 JavaScript 区域中的脚本标签。这是一个 fiddle 正在做的事情。只需如下更改 JavaScript

function replacer(e){
    var replacement = ['y', 'p', 'l', 't', 'a', 'v', 'k', 'r', 'e', 'z', 'g', 'm', 's', 'h', 'u', 'b', 'x', 'n', 'c', 'd', 'i', 'j', 'f', 'q', 'o', 'w']; 
    var english = document.getElementById(e);
    var albhed = document.getElementById('albhedform');
    albhed.value = english.value.replace(/[a-z]/gi, c => 
    replacement[c.toLowerCase().charCodeAt(0) - 97]);
}

这主要是因为浏览器尚未完全支持箭头功能。