1. Raideres 7 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 11 27.06.20 21:54 Сейчас в теме
(1)
как бы разделителей я не вижу
Ну, как минимум один разделитель есть - "/" после артикула, так что по нему выделяем артикул: с начала строки и до "/".

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

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

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

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

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

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

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

	КонецЦикла;

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

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

спасибо
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Автор новостных обзоров на тему 1С и бухучета
Санкт-Петербург
По совместительству

Программист 1С
Санкт-Петербург
зарплата до 150 000 руб.
Полный день

Программист 1С
Екатеринбург
зарплата от 80 000 руб. до 130 000 руб.
Полный день

Ведущий программист 1С
Москва
зарплата от 150 000 руб.
Полный день

Ведущий программист 1С (УТ 11)
Москва
зарплата до 200 000 руб.
Полный день