使用 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]);
}
这主要是因为浏览器尚未完全支持箭头功能。
我正在尝试为字符翻译器创建一个类似于 Google Translate 的字符,但对于 Chars,有点像解码器。这是我目前所拥有的,但我被困在 JavaScript 的最后一行附近。我不知道我需要用 replacement
变量
<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]);
}
这主要是因为浏览器尚未完全支持箭头功能。