gifts2017

Сравнение строк с транслитерацией (с символами из разных алфавитов)

Опубликовал Алексей Тараканов (taramaz) в раздел Программирование - Практика программирования

При разработке правил обмена или при поиске дублей возможен вариант, когда пользователь использовал одинаковые символы из русского и английского алфавита. Например  Н (эн) <> H (аш), Р(эр)<> P(пэ) и т.д.
В данной обработке реализовано сравнение строк с учетом такой криворукости пользователя.

Обработка содержит две функции

СравнитьСтрокиСТранслитерацией(Строка1,Строка2)   и    СравнитьСимволыСТранслитерацией(С1,С2)

Перед сравнением обе строки приводятся к верхнему регистру (на всякий случай), т.е. регистр не учитывается при сравнении.

В функции СравнитьСимволыСТранслитерацией(С1,С2) содержится ТЗ соответствий символов разных алфавитов, ее можно дополнить и другими символами, например "точка" и "запятая".

Функции лежат в модуле обработки. В форме реализован пример использования.

Доп: Добавил сравнение на "вхождение" одной строки в другую, тоже с учетом транслитерации.
В разных базах может быть разная длина кода, напрмер в одной базе код "АВС123456ААА", а в другой "АВС123456А". В этом случае обработка вернет "Вхождение" вместо "Истина или Ложь".
Проверяется по принципу Строка1Н = Лев(Строка1,СтрДлина(Строка2));
т.е. строки "АВС123456ААА",  "ААААВС123456" вернут ложь.... если надо, допишите сами, мне нужно было только такое условие.

Доп2: Предыдущая версия очень медленно обрабатывала большие объемы данных. Оптимизировал.
Таблица соответствия символов формируется отдельной функцией (т.е. вне цикла)
Убрал лишние циклы.

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
ДублиПоКодамСТранслитерацией
.epf 7,70Kb
14.05.12
22
.epf 7,70Kb 22 Скачать

См. также

Подписаться Добавить вознаграждение
В этой теме еще нет сообщений.
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа