Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

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

Delphi , Синтаксис , Преобразования

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

Автор: Дмитриев Сергей
WEB-сайт: http://delphibase.endimus.com

{ **** UBPFD *********** by delphibase.endimus.com ****
>> Транслитерация кириллицы в латынь

Преобразование строки вида 'Транслитерация' в 'Transliteratsiya' по правилам ГОСТа

Зависимости: System
Автор:       Дмитриев Сергей, sergeante@mail.ru, ICQ:93240449, Мурманск
Copyright:   Дмитриев С.А., 2002
Дата:        18 декабря 2002 г.
***************************************************** }

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;

Программная функция Delphi, именуемая TranslitRus2Lat, выполняет транслитерацию кириллических символов в латинские символы по стандарту GOST. Функция принимает строковый ввод Str и возвращает результат транслитерации.

Код функции состоит из нескольких частей:

  1. Константные массивы: Два константных массива, RArrayL и RArrayU, содержат кириллические символы в нижнем и верхнем регистре соответственно.
  2. Переменные: Several переменные объявлены:
    • LenS: длина входной строки
    • i: переменная цикла
    • p: целочисленная переменная, используемая для хранения позиции символа в константных массивах
    • d: байтовая переменная, используемая как флаг для указания, является ли символ нижнего регистра (1) или верхнего регистра (2)
  3. Основная функция: Функция TranslitRus2Lat инициализирует пустую строку результата и проходит по каждому символу в входной строке с помощью цикла.
  4. Для каждого символа:
    • Найдите его позицию в константных массивах с помощью функции pos
    • Если символ найден, добавьте соответствующий латинский символ к результатной строке (на основе значения d)
    • Если символ не найден, добавьте оригинальный символ к результатной строке

Функция возвращает транслитерированный результат в виде новой строки.

Альтернативное решение: Вместо использования отдельных массивов для нижнего и верхнего регистра символов можно использовать одиночный массив с обеими случаями. Например:

const
  RArray: array[1..62] 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'
  );

Затем можно использовать функцию pos для поиска позиции каждого символа в массиве и добавлять соответствующий латинский символ к результатной строке. Это упрощает код и делает его более поддерживаемым.

Программный код на Delphi предназначен для транслитерации кириллицы в латынь по правилам ГОСТа.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Преобразования ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 13:25:44/0.0056979656219482/1