Транслитерация кириллицы в латиницу

function TranslitRus2Lat(const Str: String): String;
const
  RArrayL = 'абвгдеёжзийклмнопрстуфхцчшщьыъэюя';
  RArrayU = 'АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯ';
  colChar = 33;
  arr: array[1..2, 1..ColChar] of String =
(('a','b','v','g','d','e','yo','zh','z','i','y',
'k','l','m','n','o','p','r','s','t','u','f',
'kh','ts','ch','sh','shch','''','y','''','e','yu','ya'),
('A','B','V','G','D','E','Yo','Zh','Z','I','Y',
'K','L','M','N','O','P','R','S','T','U','F',
'Kh','Ts','Ch','Sh','Shch','''','Y','''','E','Yu','Ya'));
var
  i: Integer;
  LenS: Integer;
  p: Integer;
  d: Byte;
begin
  result := '';
  LenS := length(str);
  for i := 1 to lenS do
  begin
    d := 1;
    p := pos(str[i], RArrayL);
    if (p = 0) then
    begin
      p := pos(str[i], RArrayU);
      d := 2
    end;
    if (p<>0) then result := result + arr[d, p]
    //если не русская буква, то берем исходную
    else result := result + str[i];
  end;
end;

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *