Adatum
Мар
25
2013

Пишем простейший конвертер текста из кириллицы в латиницу.

cyrtolat
Хочу вам представить пример того как можно сделать простейший онлайн конвертер текста из кириллицы в латиницу (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.

Источник урока: http://www.adatum.ru
Автор: Сергоманов Дмитрий

Оставить комментарий