1

我正在研究音译脚本(将韩语音节转换为拉丁字母)。

问题是我的脚本只接受罗马化“갈라”、“갈”或“라”。它不会转换“갈라라”、“라갈”、“갈 라”、“라라”、“갈갈”等。

有没有人有办法解决吗?我会很感激的。

<script>

var hangul_syllable_to_roman2 = {
'갈라' : 'galla',
}
var hangul_syllable_to_roman = {
'갈' : 'gal',
'라' : 'ra',
}

function transliteration_hangul_to_roman(syllable) {
    var roman2 = hangul_syllable_to_roman2[syllable];
    var roman = hangul_syllable_to_roman[syllable];
        if (roman2 || roman) {
        return roman2 || roman;
        }
        else {
        return syllable;
        }
}

function afficher(form2) {
    var testin = document.form2.entree.value;
                 document.form2.sortie.value=transliteration_hangul_to_roman(testin);
}

</script>

    <div>
        <FORM NAME="form2">
            <textarea name="entree" value="input"></textarea>      
            <input type="button" name="bouton" value="Convertir" onClick="afficher(form2)">
            <textarea name="sortie" value="output"></textarea>
        </FORM>         
    </div>
4

1 回答 1

0

您只会得到您定义的两种情况,因为您没有循环遍历整个输入字符串。

试试这个(未经测试!):

function transliteration_hangul_to_roman(syllable)
{
    var result = '', roman, roman2;
    while (syllable.length > 0)
    {
        roman2 = hangul_syllable_to_roman2[syllable.substr(0,2)];
        if (roman2)
        {
            result += roman2;
            syllable = syllable.substr(2);
        } else
        {
            roman = hangul_syllable_to_roman[syllable.substr(0,1)];
            if (roman)
                result += roman;
            else
                result += syllable.substr(0,1);
            syllable = syllable.substr(1);
        }
    }
    return result;
}
于 2013-11-11T23:58:04.220 回答