Другие языки программирования и технологии

вопрос программистам 1с. Как в 1с из середины текстовой строки вырезать числа?

Как в 1с из текстовой строки, представляющей произвольный набор чисел разделённые произвольным количеством пробелов и табуляций, вычеленить эти числа? - стандарная операция "число", вроде даёт возможность добраться только до первого. Можно конечно обрезать каждый раз строку с права на определённое количество позиций, но к сожалению этот номер не проходит - числа разной длины и разного представления (целые, действительные, с плавающей точкой)
Функция ЭтоЦифра (лбуква)
Если (лбуква >="0")И (лбуква <="9") Тогда
Возврат Истина;
Иначе
Возврат Ложь;
КонецЕсли;
КонецФункции
//****************
Процедура ИщемЧисла (текст1)
МасЧисел = Новый Массив;
число1 = 0;
делитель = 0.1;
ЦелаяЧасть = Истина;
Для ии = 1 По СтрДлина (текст1) Цикл
буква = Сред (текст1,ии, 1);
Если этоЦифра (буква) Тогда
Если ЦелаяЧасть Тогда
число1 = число1*10+Число (буква) ;
Иначе
число1 =число1+Число (буква) *делитель;
делитель = делитель/10;
КонецЕсли;
ИначеЕсли буква = "." Тогда
ЦелаяЧасть = Ложь;
Иначе // вот сюда попадаем при разделителях
масЧисел. Добавить (число1); // в массив чисел добавляем новое найденное число, все в исходное
делитель = 0.1;
ЦелаяЧасть = Истина;
Число1 = 0;
КонецЕсли;
КонецЦикла;
КонецПроцедуры // после выполнения процедуры имеем массив чисел
// если разделители идут подряд - то получим кучу 0-вых элементов массива
Александр Усанин
Александр Усанин
56 455
Лучший ответ
В типовых 7.7 (в бухгалтерии, в частности) есть функция глРазложить (). Она как раз создана, чтоб разбирать строки с произвольными разделителями
Юрий Домарев
Юрий Домарев
3 556
СтрЗаменить (ПроизвольныйНаборЧисел, " ", "");
СокрЛП (ПроизвольныйНаборЧисел) ; // перестраховка
Попытка
Число (ПроизвольныйНаборЧисел) ;
Исключение
Сообщить ("Не удалось преобразовать к типу число: "+ПроизвольныйНаборЧисел) ;
КонецПопытки;
------------
блин не понял вопроса сначала
------------
делаем так, заменяем пробелы на символ ";" (как пример) получим что-то типа "23;;;34;22;;;21....и т. д"
потом преобразуем это в СписокЗначений, а после удаляем пустые значения из списка - занавес!
Могу помочь за вознаграждение :)