новое событие
Информационный поток
Задания вакансии материалы разработки сообщения форума

Делаем число из смешанной строки/очищаем строку от цифр и зачем нам это нужно?

  • Добавить свою публикацию
  • для этого требуется регистрация

 

 // Функция извлекает посимвольно число из строки
// 234Вася89 превратится в 23489
Функция ИзвлечьЧислоИзСтрокиПосимвольно(ИсходнаяСтрока) Экспорт
	ЧислоСтрока="";
	Для стр = 1 по СтрДлина(ИсходнаяСтрока) цикл
		СледующийСимвол = Сред(ИсходнаяСтрока, стр, 1);
		Попытка
		    ЧислоСтрока = ЧислоСтрока + Строка(Число(СледующийСимвол));
		Исключение
		КонецПопытки;
	КонецЦикла;
	Попытка
	   	ЧислоВернуть = Число(ЧислоСтрока);
	Исключение
		ЧислоВернуть = 0;
	КонецПопытки;
	
	Возврат ЧислоВернуть;
КонецФункции // ИзвлечьЧислоИзСтрокиПосимвольно()

// Функция очищает строку от цифр посимвольно
// 234Вася89 превратится в Вася
Функция ОчиститьСтрокуОтЦифрПосимвольно(ИсходнаяСтрока) Экспорт
	ЧистаяСтрока="";
	Для стр = 1 по СтрДлина(ИсходнаяСтрока) цикл
		СледующийСимвол = Сред(ИсходнаяСтрока, стр, 1);
		Попытка
			ДляПроверки = Число(СледующийСимвол); 
		Исключение
			ЧистаяСтрока = ЧистаяСтрока + Строка(СледующийСимвол);
		КонецПопытки;
	КонецЦикла;
	Возврат ЧистаяСтрока;
КонецФункции // ОчиститьСтрокуОтЦифрПосимвольно()

 

Пример использования:


Имеем ТЗ, с колонкой, содержащей значения вида БукваЧисло (например R7,R2,R1,R10)

Перед нами стоит задача отсортировать по этой колонке по числовой части (R1,R2,R7,R10), а не так, как отсортирует 1С по умолчанию (R1,R10,R2,R7) 


 

// сначала добавим числовую колонку, по которой потом отсортируем
ТЗ.Колонки.Добавить("Индекс"); 
Для каждого Стр Из ТЗ Цикл
	// заполним колонку Индекс индексами из КолонкаДляСортировки 
	Стр.Индекс = ИзвлечьЧислоИзСтрокиПосимвольно(Стр.КолонкаДляСортировки); 
КонецЦикла; 
// отсортируем по числовому индексу.
ТЗ.Сортировать("Индекс"); 

 

Вуаля! (R1,R2,R7,R10)

 

 
0
Еще от автора
≡ к списку статей