Мар
25
2013
25
2013
JavaScript // jQuery /
Пишем простейший конвертер текста из кириллицы в латиницу.
Хочу вам представить пример того как можно сделать простейший онлайн конвертер текста из кириллицы в латиницу (cyr to lat online).
Будем производить замену знаков кириллицы на латиницу по следующим правилам: ЙЦУКЕНГШЗХФЫВАПРОЛДЖЭЧСМИТЬБЪ — будем менять на ICUKENGWZHFYVAPROLDJE4SMIT^B&
Ш на W, Ы на Y, Ч на 4, Ь на ^, Ъ на &.Ну а в случае отсутствия одно буквенных замен, меняем: Щ на TSH, Я на YA, Ю на YO, Ё на YO
Html код странички:
<html> <head> <script language="JavaScript" src="vit.js"></script> </head> <table> <h2>Преобразователь текста из кириллицы в латиницу</h2> <form name="formCyrToLat"> <b>Вставьте исходный текс на русском (кириллица).</b> <textarea name="txtBoxCyr" rows="16" cols="64"></textarea> <input class="button default" type="button" name="RusLat" value="Преобразовать" onclick="RusLatTranliter();"> <input class="button default" type="reset" name="Reset" value="Стереть"> <b>Результат преобразования (латиница).</b> <textarea name="txtBoxLat" rows="16" cols="64" id="Textarea1"></textarea> </form> </table> </body> </html>
Код JavaScript:
var m_sRusB = "ЙЦУКЕНГШЗХФЫВАПРОЛДЖЭЧСМИТЬБЪ"; var m_sLatB = "ICUKENGWZHFYVAPROLDJE4SMIT^B&"; var m_sRusBX = "ЩЯЮЁ"; var m_asLatBX = new Array("TSH", "YA", "YU","YO"); var m_sRusS = "йцукенгшзхфывапролджэчсмитьбъ"; var m_sLatS = "icukengwzhfyvaproldje4smit^b&"; var m_sRusSX = "щяюё"; var m_asLatSX = new Array("tsh", "ya", "yu", "yo"); function RusLatTranliter() { var sTextRu = document.formCyrToLat.elements["txtBoxCyr"].value; var nLen = sTextRu.length; var ni=0, nj=0; var nLenB = m_sRusB.length; var nLenBX = m_sRusBX.length; var sTextLat = ""; for (ni=0; ni<nLen; ni++) { var chi = sTextRu.charAt(ni); var bFind = false; for (nj=0; nj<nLenB; nj++) { if (chi == m_sRusS.charAt(nj)) { sTextLat += m_sLatS.charAt(nj); bFind = true; break; } } if (bFind) continue; for (nj=0; nj<nLenBX; nj++) { if (chi == m_sRusSX.charAt(nj)) { sTextLat += m_asLatSX[nj]; bFind = true; break; } } if (bFind) continue; for (nj=0; nj<nLenB; nj++) { if (chi == m_sRusB.charAt(nj)) { sTextLat += m_sLatB.charAt(nj); bFind = true; break; } } if (bFind) continue; for (nj=0; nj<nLenBX; nj++) { if (chi == m_sRusBX.charAt(nj)) { sTextLat += m_asLatBX[nj]; bFind = true; break; } } if (bFind) continue; sTextLat += chi; } document.formCyrToLat.elements["txtBoxLat"].value = sTextLat; }
Если необходимы другие замены можно расширить переменные var m_sRusB и соответственно m_sLatB.