Имя: Пароль:
1C
 
Как разбить строку в массив
0 phpcoder
 
07.12.07
15:16
Функцией ПолучитьПолноеНаименование() получаю такую строку:

САНТЕХНИКА/САНФАЯНС/MILLIM SAMAZA/Компакт Millim Samaza 9924 (Blue Grey) голубой

Вопрос?

Как разбить строку в массив по "/"

Нужен такой результат:

ЧастьСтр[0] = САНТЕХНИКА
ЧастьСтр[1] = САНФАЯНС
ЧастьСтр[2] = MILLIM SAMAZA
ЧастьСтр[3] = Компакт Millim Samaza 9924 (Blue Grey) голубой
1 Immortal
 
07.12.07
15:17
ИзСтрокиСРазделителями
2 Гаркин
 
07.12.07
15:17
Воспользоваться яндексом
3 SASH_EG
 
07.12.07
15:20
СтрокаСПараметрами=Параметры;
       Позиция=Найти(СтрокаСПараметрамиFTP,"/");
       Элемент1=Сред(СтрокаСПараметрами,1,Позиция-1);
       СтрокаСПараметрами=Прав(СтрокаСПараметрами,СтрДлина(СтрокаСПараметрами)-Позиция);
       
       Позиция=Найти(СтрокаСПараметрами,"/");
       Элемент2=Сред(СтрокаСПараметрами,1,Позиция-1);
       СтрокаСПараметрами=Прав(СтрокаСПараметрами,СтрДлина(СтрокаСПараметрами)-Позиция);
4 luns
 
07.12.07
15:23
Типовая функция из модуля "Общего назначения"

// Функция "расщепляет" строку на подстроки, используя заданный
//        разделитель. Разделитель может иметь любую длину.
//        Если в качестве разделителя задан пробел, рядом стоящие пробелы
//        считаются одним разделителем, а ведущие и хвостовые пробелы параметра Стр
//        игнорируются.
//        Например,
//        РазложитьСтрокуВМассивПодстрок(",ку,,,му", ",") возвратит массив значений из пяти элементов,
//        три из которых - пустые строки, а
//        РазложитьСтрокуВМассивПодстрок(" ку   му", " ") возвратит массив значений из двух элементов
//
//    Параметры:
//        Стр -            строка, которую необходимо разложить на подстроки.
//                        Параметр передается по значению.
//        Разделитель -    строка-разделитель, по умолчанию - запятая.
//
//
//    Возвращаемое значение:
//        массив значений, элементы которого - подстроки
//
Функция РазложитьСтрокуВМассивПодстрок(Знач Стр, Разделитель = ",") Экспорт
   
   МассивСтрок = Новый Массив();
   Если Разделитель = " " Тогда
       Стр = СокрЛП(Стр);
       Пока 1=1 Цикл
           Поз = Найти(Стр,Разделитель);
           Если Поз=0 Тогда
               МассивСтрок.Добавить(Стр);
               Возврат МассивСтрок;
           КонецЕсли;
           МассивСтрок.Добавить(Лев(Стр,Поз-1));
           Стр = СокрЛ(Сред(Стр,Поз));
       КонецЦикла;
   Иначе
       ДлинаРазделителя = СтрДлина(Разделитель);
       Пока 1=1 Цикл
           Поз = Найти(Стр,Разделитель);
           Если Поз=0 Тогда
               МассивСтрок.Добавить(Стр);
               Возврат МассивСтрок;
           КонецЕсли;
           МассивСтрок.Добавить(Лев(Стр,Поз-1));
           Стр = Сред(Стр,Поз+ДлинаРазделителя);
       КонецЦикла;
   КонецЕсли;
   
КонецФункции // глРазложить
5 phpcoder
 
07.12.07
15:23
Я заранее не знаю глубину выборки
6 sdvig
 
07.12.07
15:24
В глобальном модуле есть функция глРазложить
7 SASH_EG
 
07.12.07
15:26
(4)(6) таки граждане уверены что все "живут" в типовых конфах ?
(4) иой пример -тоже самое только короче :)
8 Кураж
 
07.12.07
15:27
(3) Да вы, батенька, извращенец!
МнСтр=СтрЗаменить(ИсходнаяСтрока,Разделитель,Символы.ПС);
Для н=1 По СтрЧислоСтрок(МнСтр) Цикл
Массив.Добавить(СтрПолучитьСтроку(МнСтр,н));
9 SASH_EG
 
07.12.07
15:28
(5) ну выбирай пока есть что, строка же сокращается.
10 SASH_EG
 
07.12.07
15:31
(8) да, этот способ красивее :)
11 luns
 
07.12.07
15:33
(7) не уверен... поэтому и запостил саму функцию
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой