Имя: Пароль:
1C
1C 7.7
v7: Работа с строкой
0 andrew231
 
20.06.13
10:12
Добрый день! Подскажите пожалуйста как из строки "папка1~папка2~папка3" получить отдельные значения перем1="папка1" перем2="папка2" перем3="папка3"ю спасибо заранее!
1 zak555
 
20.06.13
10:14
СЗ = глРазложить(МояСтрочка, "~");
2 Ёпрст
 
20.06.13
10:14
(0)

сп = глРазложить("папка1~папка2~папка3" ,"~");

Сообщить(сп.ПолучитьЗначение(1));
Сообщить(сп.ПолучитьЗначение(2));
Сообщить(сп.ПолучитьЗначение(3));
3 andrew231
 
20.06.13
10:16
(1) (2)
у меня нет этой процедуры конф ПУБ
4 20130601
 
20.06.13
10:16
НН="папка1~папка2~папка3"
Папка1=Лев(НН,Найти(НН,"~"));
5 20130601
 
20.06.13
10:17
и т.д
6 zak555
 
20.06.13
10:17
(3) не верю
7 Mikeware
 
20.06.13
10:17
(3)напиши
8 oslokot
 
20.06.13
10:18
(3) беда..
9 Ёпрст
 
20.06.13
10:18
(3) дарю
//******************************************************************************
//    Функция глРазложить(Знач Стр, Разделитель = ",") Экспорт
//
//    Параметры:
//        Стр -            строка, которую необходимо разложить на подстроки.
//                        Параметр передается по значению.
//        Разделитель -    строка-разделитель, по умолчанию - запятая.
//
//
//    Возвращаемое значение:
//        список значений, элементы которого - подстроки
//
//    Описание:
//        Функция "расщепляет" строку на подстроки, используя заданный
//        разделитель. Разделитель может иметь любую длину.
//        Если в качестве разделителя задан пробел, рядом стоящие пробелы
//        считаются одним разделителем, а ведущие и хвостовые пробелы параметра Стр
//        игнорируются.
//        Например,
//        глРазложить(",ку,,,му", ",") возвратит список значений из пяти элементов,
//        три из которых - пустые строки, а
//        глРазложить(" ку   му", " ") возвратит список значений из двух элементов
//        
Функция глРазложить(Знач Стр, Разделитель = ",") Экспорт
   СЗ = СоздатьОбъект("СписокЗначений");
   Если Разделитель = " " Тогда
       Стр = СокрЛП(Стр);
       Пока 1=1 Цикл
           Поз = Найти(Стр,Разделитель);
           Если Поз=0 Тогда
               СЗ.ДобавитьЗначение(Стр);
               Возврат СЗ;
           КонецЕсли;
           СЗ.ДобавитьЗначение(Лев(Стр,Поз-1));
           Стр = СокрЛ(Сред(Стр,Поз));
       КонецЦикла;
   Иначе
       ДлинаРазделителя = СтрДлина(Разделитель);
       Пока 1=1 Цикл
           Поз = Найти(Стр,Разделитель);
           Если Поз=0 Тогда
               СЗ.ДобавитьЗначение(Стр);
               Возврат СЗ;
           КонецЕсли;
           СЗ.ДобавитьЗначение(Лев(Стр,Поз-1));
           Стр = Сред(Стр,Поз+ДлинаРазделителя);
       КонецЦикла;
   КонецЕсли;
КонецФункции // глРазложить
10 Рэйв
 
20.06.13
10:18
Стр=СтрЗаменить("папка1~папка2~папка3","~",",");
Сп=СоздатьОбъект("СписокЗначений");
Стр=Сп.ИзСтрокиСРазделителями(Стр):

Сообщить(сп.ПолучитьЗначение(1));
Сообщить(сп.ПолучитьЗначение(2));
Сообщить(сп.ПолучитьЗначение(3));
11 Рэйв
 
20.06.13
10:20
Стр=Сп.ИзСтрокиСРазделителями(Стр):
читать как
Сп.ИзСтрокиСРазделителями(Стр):
12 andrew231
 
20.06.13
10:23
(6) говорю нет её
13 zak555
 
20.06.13
10:24
(12) а если найду ?
14 andrew231
 
20.06.13
10:25
(13) у меня в глобальнике?
15 andrew231
 
20.06.13
10:26
(4)(9)(10) спасибо большое за помощь
16 zak555
 
20.06.13
10:28
(14) открыл 338 ПУБ -- в глобальном модуле есть функция глРазложить
17 andrew231
 
20.06.13
10:32
пуб версия 7.70.047 в глобальном модуле этой процедуры нет ;)
18 zak555
 
20.06.13
10:33
так ты бы уточнил, что это укр
19 andrew231
 
20.06.13
10:34
видимо укр немного обделили! а я не знал
20 zak555
 
20.06.13
10:36
(19) качать укр я не буду, но всё равно думаю, что это функция или аналогичная ей там пристуствует
21 zak555
 
20.06.13
10:36
*присутствует
22 FlashC
 
20.06.13
10:40
Функция глРазложить(Знач Стр, Разделитель = ",") Экспорт
   
   Список = СоздатьОбъект("СписокЗначений");
   Длина  = СтрДлина(Разделитель);
   
   Стр = СокрЛП(Стр);
   Поз = Найти(Стр, Разделитель);
   
   Пока 0 < Поз Цикл
       Список.ДобавитьЗначение(СокрП(Лев(Стр, Поз-1)));
       
       Стр = СокрЛ(Сред(Стр, Поз+Длина));
       Поз = Найти(Стр, Разделитель);
   КонецЦикла;

   Список.ДобавитьЗначение(Стр);
   
   Возврат Список;
   
КонецФункции // глРазложить()
23 andrew231
 
20.06.13
10:43
возможно но её название не глРазложить
24 andrew231
 
20.06.13
10:44
(22) спасибо ;)
25 Ковычки
 
20.06.13
10:45
СтрЗаменить("папка1~папка2~папка3" ,"~", "" "");
26 andrew231
 
20.06.13
10:52
(25) это не то что нужно.

спасибо всем за помощь. проблема решена. Всего доброго ;)
27 Ковычки
 
20.06.13
10:53
это именно то, что нужно
28 Ёпрст
 
20.06.13
10:55
(25) он не поймет, как потом ЭТО использовать..
29 andrew231
 
20.06.13
10:58
(28) ну здесь и так способов уже достаточно ;)
(25) как в дальнейшем использовать, да я не знаю, но готов увидеть. спасибо!
30 Simod
 
20.06.13
11:06
Такое еще забыли:

ТекСтрока = СтрЗаменить("папка1~папка2~папка3", "~", РазделительСтрок);
Для ТекПозиция = 1 По СтрКоличествоСтрок(ТекСтрока) Цикл
   Сообщить(СтрПолучитьСтроку(ТекСтрока, ТекПозиция));
КонецЦикла;
31 Ковычки
 
20.06.13
11:07
(30) см (25) )
32 Ёпрст
 
20.06.13
11:07
(30) это и есть в (25)
33 FlashC
 
20.06.13
11:07
(23) глРозкласти() чтоле? :-)
34 Ковычки
 
20.06.13
11:09
в ПУБ есть глРазложить
35 FlashC
 
20.06.13
11:10
да у него украинская )
36 Simod
 
20.06.13
11:12
(31)(32) Я в курсе, но так нагляднее.
37 andrew231
 
20.06.13
11:13
(33) щірий українець? глРозкласти все одно не має ;)
38 vova1122
 
20.06.13
11:16
(33) В Украинских конфах название процедур/функций также идут на русском языке
39 FlashC
 
20.06.13
11:18
народ - смайлы я просто так ставлю?
40 andrew231
 
20.06.13
11:32
(38) в (33) как бы пошутили...
41 varelchik
 
20.06.13
12:04
(0)
Смотри внимательно!
ПУБ 7.70.045 (глобальный модуль)
Процедура глПарсить(Стр,Спис,Разделитель = ";") Экспорт
   Спис.УдалитьВсе();
   СтрПарс = Стр;
   Инд = Найти(СтрПарс,Разделитель);
   Пока Инд<>0 Цикл
       ТекСтр = Сред(СтрПарс,1,Инд-1);
       СтрПарс = Сред(СтрПарс,Инд+1,СтрДлина(СтрПарс)-Инд);
       
       ИндРавно = Найти(ТекСтр,"=");
       Если ИндРавно = 0 Тогда
           Продолжить;
       КонецЕсли;
       Пар = Сокрлп(Сред(ТекСтр,1,ИндРавно-1));
       Зна = Сокрлп(Сред(ТекСтр,ИндРавно+1,СтрДлина(ТекСтр)-ИндРавно));
       
       Спис.ДобавитьЗначение(Зна,Пар);
       Инд = Найти(СтрПарс,Разделитель);
   КонецЦикла;
КонецПроцедуры //глПарсить
42 Эльниньо
 
20.06.13
12:24
Миста вам не швидка допомога тут.
43 zak555
 
20.06.13
12:43
(41) бу га га