Неверов Евгений Викторович
QR-код
Меню сайта
Категории раздела
Программирование на языке Паскаль [26]
В данной категории представлены новые функции, созданные на языке Паскаль, которые могут пригодиться при написании своих программ
Программирование на Delphi [19]
В данной категории представлены полезные подпрограммы, которые могут пригодиться при написании своих программ, а также рассматриваются примеры готовых проектов, создаваемых в среде программирования Delphi
Программирование на HTML [1]
В данной категории рассматриваются примеры готовых проектов, создаваемых на языке HTML
Мои программы [1]
Описание разработанных автором программ.
Online-программы [2]
Прочее [42]
Свободная тематика
Мини-чат
200
Наш опрос
Сколько Вам лет?
Всего ответов: 77
Статистика

Онлайн всего: 2
Гостей: 2
Пользователей: 0

Транслитерация

1. Определение символа: цифра, русская или английская буква

type
  TTranslit = (Ru, En, Num, Sym);

function TranslitChar(s: char): TTranslit;
begin
   Result:=Sym;
   if (s>='А') and (s<='я') or (s='ё') or (s='Ё') then
      Result:=Ru;
   if (s>='A') and (s<='z') then
      Result:=En;
   if (s>='0') and (s<='9') then
      Result:=Num;
end;

где:

  • s – исходный символ.

Например,

  • TranslitChar('5') выведет Num (цифра);
  • TranslitChar('%') выведет Sym (символ);
  • TranslitChar('р') выведет Ru (русская буква);
  • TranslitChar('p') выведет En (английская буква, можете скопировать для проверки).

2. Проверка на наличие символов в строке

function TranslitString(s: string; t: TTranslit): boolean;
var i: integer;
begin
   Result:=false;
   for i:=1 to Length(s) do
      if TranslitChar(s[i])=t then
      begin
         Result:=true;
         Exit;
      end;
end;

где:

  • s – исходная строка;
  • t – тип символов.

Например,

  • TranslitString('Копируй символы для проверки!', Num) выведет false (эта строка не содержит цифр);
  • TranslitString('Точнее слова:', Sym) выведет true (найдено двоеточие);
  • TranslitString('Pascal', Ru) выведет false (нет русских букв);
  • TranslitString('кyб', En) выведет true (Как так? Оказывается 2-я буква – английская. Можно скопировать для проверки);
  • TranslitString('Windоws', Ru) выведет true (5-я буква русская).

3. Замена транслируемых символов с одного языка на другой

function TranslitRuEn(s: string; En: boolean): string;
const RuEn: array[0..1, 0..36] of string = (('щ', 'ё', 'ж', 'ц', 'ч', 'ш', 'ы', 'э',
         'ю', 'я', 'а', 'б', 'в', 'в', 'г', 'д', 'е', 'з', 'и', 'й', 'к', 'л', 'м',
         'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ъ', 'ы', 'ь', 'ь'),
        ('sch', 'yo', 'zh', 'ts', 'ch', 'sh', 'yi', 'ye', 'yu', 'ya', 'a', 'b', 'v',
         'w', 'g', 'd', 'e', 'z', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'r', 's',
         't', 'u', 'f', 'h', 'c', '''''', 'y', '''', '`'));
var i: integer;
    a, b: byte;
begin
   if En then
   begin
      a:=0;
      b:=1;
   end else
   begin
      a:=1;
      b:=0;
   end;
   for i:=Low(RuEn[0]) to High(RuEn[0]) do
      s:=StringReplaceNew(s, RuEn[a, i], RuEn[b, i], false, false);
   Result:=s;
end;

где:

  • s – исходная строка;
  • En – транлировать на русский (false) или английский (true) язык.

Например,

  • TranslitRuEn('Дрожжи', true) выведет 'Drozhzhi';
  • TranslitRuEn('Chislo', false) выведет 'Число'.

Примечание. Для полноценной работы данной функции необходимо скопировать вспомогательную функцию "Замена символа или фразы на новое значение":

function StringReplaceNew(s, OldPattern, NewPattern: string; RegOld, RegNew: boolean): string;
Категория: Программирование на языке Паскаль | Добавил: newerow1989 (12.03.2016)
Просмотров: 1517 | Рейтинг: 0.0/0
Всего комментариев: 0
Имя *:
Email:
Код *:
Вход на сайт
Поиск
Друзья сайта
Заработок в Интернете
Для начала необходим Электронный PAYEER® кошелек!
Copyright MyCorp © 2025
Версия для мобильных устройств. Яндекс.Метрика Анализ сайта Проверить мой сайт на ScamAdviser.com