Возвращает строку, состоящую только из цифр и символов русского и английского алфавита
Функция УбратьЛишниеСимволыИзСтроки(Строка) Экспорт
РезультирующаяСтрока = "";
Для н = 1 По СтрДлина(Строка) Цикл
Если (КодСимвола(Строка, н) >= 48 И КодСимвола(Строка, н) <= 57)
ИЛИ (КодСимвола(Строка, н) >= 65 И КодСимвола(Строка, н) <= 90)
ИЛИ (КодСимвола(Строка, н) >= 97 И КодСимвола(Строка, н) <= 122)
ИЛИ (КодСимвола(Строка, н) >= 1040 И КодСимвола(Строка, н) <= 1103) Тогда
РезультирующаяСтрока = РезультирующаяСтрока + Сред(Строка, н, 1);
КонецЕсли;
КонецЦикла;
Возврат РезультирующаяСтрока;
КонецФункции
ЗаменитьНедопустимыеСимволыXML (БСП)
УдалитьНедопустимыеСимволыXML (БСП)
ЗаменитьОдниСимволыДругими (БСП)
Убрать префикс и лидирующие нули
УдалитьПоследниеСимволыИзСтроки (БСП)
ПроверитьСтрокуНаЗапрещенныеСимволы (БСП)
#1, 21 августа 2024 11:22
Мне не нравится, что каждый раз идет получение кода символа - нарушение принципа DRY
#2, ред. 24 декабря 2024 13:49
для скорости, красоты кода, удобочитаемости (хотя по скорости это мизер) я бы написал вот так:
Функция УбратьЛишниеСимволыИзСтроки(Строка) Экспорт
РезультирующаяСтрока = "";
длина = СтрДлина(Строка);
Для н = 1 По длина Цикл
Код = КодСимвола(Строка, н);
Если (Код >= 48 И Код ⇐ 57)
ИЛИ (Код >= 65 И Код ⇐ 90)
ИЛИ (Код >= 97 И Код ⇐ 122)
ИЛИ (Код >= 1040 И Код ⇐ 1103) Тогда
РезультирующаяСтрока = РезультирующаяСтрока + Сред(Строка, н, 1);
КонецЕсли;
КонецЦикла;
Возврат РезультирующаяСтрока;
КонецФункции