1 回答

TA貢獻(xiàn)1858條經(jīng)驗 獲得超8個贊
受您的代碼啟發(fā)的解決方案:
我更改了主要功能,但這絕對有效
現(xiàn)場演示:https ://jsfiddle.net/alias_gui3/wds426mq/12/
源代碼 :
var dictionnary = {
"u":"う",
"ku":"く",
"tsu":"つ",
"test for spaces": "??"
};
var maxLength = Object.keys(dictionnary)
.reduce((a, b) => a.length > b.length ? a : b) // get the longest word
.length; // and it's length
function translate (text) {
var translated = "";
var cur = 0;
while (cur < text.length) {
var testedPhoneme;
var symbol = undefined;
for (var length = maxLength; length > 0; length --) {
testedPhoneme = text.substr(cur, length);
if (dictionnary[testedPhoneme]) {
symbol = dictionnary[testedPhoneme];
break; // stop the loop
}
}
if (symbol) {
translated += symbol;
cur += testedPhoneme.length;
}
else {
translated += text[cur]
cur++;
}
}
return translated
}
function onLatinTextChange(txt) {
var replacedTextareaElem = document.getElementById("replaced_textarea");
var div = document.createElement("div");
var replacedHtmlEntities = translate(txt);
div.innerHTML = replacedHtmlEntities;
replacedTextareaElem.value = div.innerText;
}
[上一篇] 一個簡單的解決方案:
我建議您使用空格拆分文本
如果我理解得很好,你想輸入u ku tsuget うくつ,而不是get ukutsu,如果這是正確的,那么類似的東西就可以工作:
const dictionnary = {
"u": "う",
"ku": "く",
"tsu": "つ"
var phonemes = text.split(' ') // split text by spaces
var translatedArray = phonemes.map(function (phoneme) {
return dictionnary[phoneme] || phoneme
// will return the latin phoneme if it is not in the dictionnary
})
translatedString = translatedArray.join('')
添加回答
舉報