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

入力文字列全体をループしていないため、定義した 2 つのケースのみが得られます。

これを試してください(テストされていません!):

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 に答える