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