2014-11-01 8 views
0

Я работаю на romanizer для корейских имен и я застрял здесь, потому что это не просто транслитерация от А до Б, но немного более сложный:Javascript Шар для различной транслитерации в одной строке

обычно имена сделаны из 3 слогов (признаваемых 3 символов в JavaScript), фамилия является первым один, и это, как правило, сопровождается первым именем, состоящим в 2 (или реже 1) слогов.

К сожалению, фамилии и имена не всегда имеют одинаковую латанизацию, и мне нужно поставить «-» между двумя слогами по имени.

Некоторые из бетона (искусственные) примеры:

  • 김 김김 -> Ким Гим-гим
  • 이이 김 -> Lee I-гим
  • 이김 야 -> Ли Гим-я

для работы различия между тремя слогами (символы) и попытаться сделать их, я написал следующий код:

<!DOCTYPE html> 
<html> 
<body> 

<script> 
function separation() { 
    var str = document.getElementById("ttt").value; 
    var res1 = str.charAt(0); 
    var res2 = str.charAt(1); 
    var res3 = str.charAt(2); 
    document.getElementById("demo").innerHTML = res1+res2+res3; 
} 

var syllable_1 = { 
'김' : 'Kim ', 
'이' : 'Lee ', 
'야' : 'Ya', 
} 
var syllable_2 = { 
'김' : 'Gim', 
'이' : 'I', 
'야' : 'Ya', 
} 
var syllable_3 = { 
'김' : '-gim', 
'이' : '-i', 
'야' : '-ya', 
} 

function hangul_to_roman(hangul) { 
    return syllable_1[hangul.charAt(0)] + syllable_2[hangul.charAt(1)] + (hangul.length >= 3 ? syllable_3[hangul.charAt(2)] : ""); 
} 
</script> 

<input type="text" id="ttt" value="김김이" onBlur="separation()"> 

<p id="demo"></p> 

</body> 
</html> 

РЕДАКТИРОВАТЬ: Проблема в том, что я могу получить корейский неконвертированный. Может ли кто-нибудь сказать мне, как исправить это?

Заранее благодарю вас!

+1

Не обращайте внимания на часть транслитерации: вы * заменяете * innerHTML каждым следующим новым фрагментом. Добавьте строки вместе, прежде чем записывать их в 'demo'. – usr2564301

+0

теперь лучше спасибо – user2911849

ответ

1

Я думаю, что вы хотите:

function hangul_to_roman(hangul) { 
    return syllable_1[hangul.charAt(0)] + syllable_2[hangul.charAt(1)] + (hangul.length >= 3 ? syllable_3[hangul.charAt(2)] : ""); 
} 

и вам не нужны transliteration функции.

+0

Это то, что я искал, но я не знаю, почему он все еще не конвертирует корейских персонажей -> http://jsfiddle.net/LGRAq/3/ – user2911849

+1

Нравится так: http : //jsfiddle.net/LGRAq/4/ Поскольку вы используете событие 'blur', вам нужно щелкнуть по входному тексту, а затем в другом месте. И вы можете удалить 'separation()'. –

+0

Большое спасибо – user2911849

 Смежные вопросы

  • Нет связанных вопросов^_^