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

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

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

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

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

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

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

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

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

Leave a Comment

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