Разобрать строки определеного вида

1. Raideres 8 27.06.20 20:23 Сейчас в теме
К 300728/голубые звезды на тем.сером джемпер яс р 52/86
К 300728/голубые звезды на тем.сером джемпер 52/80
КР 8520/ярко-розовый к229 фартук-нагрудник
К 8518/маленькие леопарды на сахаре фартук-нагрудник яс
К 3942/рисованный горошек фуфайка 40/62
К 4343/трубочки на белом ползунки удл 40/62

Добрый день имеется торг21 в ней пришли такого вида наименования товаров как разобрать строки так чтобы получить. как бы разделителей я не вижу а как разделить без них я хз

Артикул | наименование | цвет | размер
К 300728 | джемпер | голубые звезды на тем.сером| яс р 52/86
По теме из базы знаний
Найденные решения
2. user856012 13 27.06.20 21:54 Сейчас в теме
(1)
как бы разделителей я не вижу
Ну, как минимум один разделитель есть - "/" после артикула, так что по нему выделяем артикул: с начала строки и до "/".

Дальше в качестве разделителей остаются пробелы, по ним разлагаем остаток строки в массив подстрок, который обрабатываем по примерно такому алгоритму:
1. В цикле с конца массива к началу проверяем длину и содержимое подстрок.
2. Если в подстроке массива есть цифры или ее длина меньше 6-ти - это относится к размеру.
3. Если длина подстроки массива больше 5-х и нет цифр - это Наименование, запоминаем номер элемента этого массива в НомерНаименование и прерываем цикл
4. Объединяем элементы массива 1...НомерНаименование-1 в цвет.
5. Объединяем элементы НомерНаименование+1...Количество() в размер.

Примерно так, готовый код писать лениво (тем более нахаляву), есть и другие занятия в субботний вечер. ;)
4. Sashares 34 28.06.20 18:12 Сейчас в теме
(3)
ЕстьЧисло = Ложь;
МассивСтрок = СтрРазделить(МояСтрока,"0123456789");
Если МассивСтрок.Количество()>1 Тогда
ЕстьЧисло = Истина;
КонецЕсли;
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user856012 13 27.06.20 21:54 Сейчас в теме
(1)
как бы разделителей я не вижу
Ну, как минимум один разделитель есть - "/" после артикула, так что по нему выделяем артикул: с начала строки и до "/".

Дальше в качестве разделителей остаются пробелы, по ним разлагаем остаток строки в массив подстрок, который обрабатываем по примерно такому алгоритму:
1. В цикле с конца массива к началу проверяем длину и содержимое подстрок.
2. Если в подстроке массива есть цифры или ее длина меньше 6-ти - это относится к размеру.
3. Если длина подстроки массива больше 5-х и нет цифр - это Наименование, запоминаем номер элемента этого массива в НомерНаименование и прерываем цикл
4. Объединяем элементы массива 1...НомерНаименование-1 в цвет.
5. Объединяем элементы НомерНаименование+1...Количество() в размер.

Примерно так, готовый код писать лениво (тем более нахаляву), есть и другие занятия в субботний вечер. ;)
3. Raideres 8 28.06.20 18:06 Сейчас в теме
(2) а как вы проверяете на число
просто кроме вот такой функции я не придумал ничего
&НаСервере
Функция ПроверкаНаЧислоВСтроке(НСтрока)
	пСтрока = НСтрока;
	ЭтоЧисло = ложь;
	ДлинаСтроки = СтрДлина(пСтрока);

	Для А = 1 По ДлинаСтроки Цикл

	    стрСимвол = Лев(пСтрока, 1);
	    пСтрока = Сред(пСтрока, 2);

	    Если  (стрСимвол = "1" или стрСимвол = "2" или стрСимвол = "3" или стрСимвол = "4" или стрСимвол = "5"
	        или стрСимвол = "6" или стрСимвол = "7" или стрСимвол = "8" или стрСимвол = "9" или стрСимвол = "0") Тогда
	        ЭтоЧисло = Истина;
	        Прервать;
	    КонецЕсли;

	КонецЦикла;

	Возврат ЭтоЧисло;//Истина - есть число в строке, Ложь - число в строке отсутствует
    

КонецФункции // ЭтоЧисло
Показать
4. Sashares 34 28.06.20 18:12 Сейчас в теме
(3)
ЕстьЧисло = Ложь;
МассивСтрок = СтрРазделить(МояСтрока,"0123456789");
Если МассивСтрок.Количество()>1 Тогда
ЕстьЧисло = Истина;
КонецЕсли;
5. Raideres 8 28.06.20 20:04 Сейчас в теме
(4)
ЕстьЧисло = Ложь;
МассивСтрок = СтрРазделить(МояСтрока,"0123456789");
Если МассивСтрок.Количество()>1 Тогда
ЕстьЧисло = Истина;
КонецЕсли;

спасибо
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот