Нередко попадаются символы кириллицы вперемешку с латинскими символами, например в имени файла S000.ВEL.10UKC.&&&&&.012.DL.WD0001.txt, что может приводить к некорректной работе, например:
Необходимо получить подстроки имени файла через разделитель «.» и заполнить ими справочные реквизиты КЭД. Если не выполнить преобразование то реквизит не заполнится, т.к. в справочнике символов кириллицы нет.
Для преобразования разработана простенькая функция (код функции):
Result = ""
if Assigned(String)
RUS = "АВСЕНКМОРТХ"
LAT = "ABCEHKMOPTX"
i = 1
While ДлинаСтр(String) >= i
СимволДляПровi = Copy(String; i; 1)
j = 1
while ДлинаСтр(RUS) >= j
RUSj = Copy(RUS; j; 1)
if СимволДляПровi == RUSj
LATj = Copy(LAT; j; 1)
String = Replace(String; RUSj; LATj)
endif
j=j+1
endwhile
i=i+1
Endwhile
Result = String
endif
При необходимости результат можно пропустить через UpperCase() для приведения строки к верхнему регистру.
Смущает строка в цикле: Result = Replace(String; RUSj; LATj)
Т.е. на выходе функции будет результат только самого последнего Replace()?
Евгений не смущайтесь, это моя ошибка, поправил.
Пояните пжл, чем функция Transliterate() не устраивает? Вроде бы делает тоже самое - выполняет транслитерацию строки (там есть еще второй параметр для управления результатом). Рискну предположить что работать будет быстрее, все-таки системная.
При преобразовании «АВСЕEHKМОРТХ» функция Transliterate() вернет «AVSEEHKMORTH».
Действительно. Простите не разглядела суть.
Авторизуйтесь, чтобы написать комментарий