Убрать лишние символы из строки

Igozz 28 1 3

Возвращает строку, состоящую только из цифр и символов русского и английского алфавита

Функция УбратьЛишниеСимволыИзСтроки(Строка) Экспорт
	РезультирующаяСтрока = "";
	Для н = 1 По СтрДлина(Строка) Цикл
		Если (КодСимвола(Строка, н) >= 48 И КодСимвола(Строка, н) <= 57)
			ИЛИ (КодСимвола(Строка, н) >= 65 И КодСимвола(Строка, н) <= 90)
			ИЛИ (КодСимвола(Строка, н) >= 97 И КодСимвола(Строка, н) <= 122)
			ИЛИ (КодСимвола(Строка, н) >= 1040 И КодСимвола(Строка, н) <= 1103) Тогда
			РезультирующаяСтрока = РезультирующаяСтрока + Сред(Строка, н, 1);
		КонецЕсли;
	КонецЦикла;
	Возврат РезультирующаяСтрока;
КонецФункции
2

Комментарии

romankoav
#1, 21 августа 2024 11:22

Мне не нравится, что каждый раз идет получение кода символа - нарушение принципа DRY


Anatol
#2, ред. 24 декабря 2024 13:49

для скорости, красоты кода, удобочитаемости (хотя по скорости это мизер) я бы написал вот так:

Функция УбратьЛишниеСимволыИзСтроки(Строка) Экспорт
РезультирующаяСтрока = "";
длина = СтрДлина(Строка);
Для н = 1 По длина Цикл
Код = КодСимвола(Строка, н);
Если (Код >= 48 И Код ⇐ 57)
ИЛИ (Код >= 65 И Код ⇐ 90)
ИЛИ (Код >= 97 И Код ⇐ 122)
ИЛИ (Код >= 1040 И Код ⇐ 1103) Тогда
РезультирующаяСтрока = РезультирующаяСтрока + Сред(Строка, н, 1);
КонецЕсли;
КонецЦикла;
Возврат РезультирующаяСтрока;
КонецФункции


См. также

Строка из символа

ЗаменитьНедопустимыеСимволыXML (БСП)

УдалитьНедопустимыеСимволыXML (БСП)

ЗаменитьОдниСимволыДругими (БСП)

Убрать префикс и лидирующие нули

УдалитьПоследниеСимволыИзСтроки (БСП)

ПроверитьСтрокуНаЗапрещенныеСимволы (БСП)

УдалитьПоследнийСимволВСтроке (БСП)

СформироватьСтрокуСимволов (БСП)

Модератору