2017-06-13 84 views
0

我正在嘗試爲類似於Google翻譯的字符翻譯器創建字符,但對於字符,有點像解碼器。這是迄今爲止我所擁有的,但我被困在JavaScript的最後一行附近。我不知道我需要把對replace()方法的後面部分與replacement可變使用javascript字符替換()的字符

<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] 

有人能解釋需要修正信什麼信?

+0

所以你想讓Char被替換爲相應的ASCII? – Zionz

+1

一旦我添加了關閉''',那行'.charCodeAt(0)-97'就可以工作。什麼是它不起作用的輸入示例? – nnnnnn

+0

是您正在嘗試使用的** _ exact _ **代碼的最後一個片段? –

回答

0

你在小提琴上的代碼非常好。您只需將語言更改爲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]); 
} 

這主要是因爲瀏覽器中尚未完全支持箭頭功能。

+0

你這樣說,但如果它仍然不起作用,那就不好了。感謝您的努力 –