Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   Аналог ЗначениеИзСтроки в 8ке с помощью регулярного выражения? (http://forums.kuban.ru/f1040/analog_znachenieizstroki_v_8ke_s_pomosh-yu_regulyarnogo_vyrazheniya-2004646.html)

gematogen 28.12.2011 09:46

Аналог ЗначениеИзСтроки в 8ке с помощью регулярного выражения?
 
Кто-нибудь может помочь с составлением регулярного выражения для создания аналога ЗначениеИзСтроки.

Reaper 28.12.2011 09:47

(1) Нафига?

gematogen 28.12.2011 09:51

2-Reaper > есть более простой способ разбора строки созданной в 7ке с помощью ЗначениеВСтроку?

Reaper 28.12.2011 09:54

А прекратить извращения не предлагать?

gematogen 28.12.2011 09:56

4-Reaper > предложить и дать другой вариант обработки

Reaper 28.12.2011 09:57

Конвертация Данных 2.0 лежит на твоем ИТС.

gematogen 28.12.2011 09:58

6-Reaper > не, вариант смены формата данных не обсуждается
Ищутся варианты обработки строки.

Sadovnikov 28.12.2011 09:59

7-gematogen > Ты чего с ней потом делаешь-то? Зачем парсишь?

Reaper 28.12.2011 10:01

(7) Нет вариантов. Пиши парсер сам. Для облегчения можешь поискать по типовым "РазложитьСтроку".

gematogen 28.12.2011 10:02

8-Sadovnikov > есть у меня рабочии функции следующие:

//____________________________________________
Процедура СоздатьRegExp()
Попытка
_glRegExp=Новый COMОбъект("VBScript.RegExp");
_glRegExp.IgnoreCase =Истина;
_glRegExp.Global =Истина;
_glRegExp.Multiline =Истина;
_glRegExp.Pattern ="(""([^""]*|""{2**)*""(,|$))|""[^""]*""("",|$)|[^"",]+(,|$)|(,)";
_glRegExp.Pattern ="(""([^""]*|""{2**)*""(,|$))|""[^""]*""("",|$)|[^"",]+(,|$)|(,)";
Исключение
ЛогФайл.ДобавитьСтроку("Неудачная попытка создания 'VBScript.RegExp'");
_glRegExp=Неопределено
КонецПопытки
КонецПроцедуры
//____________________________________________
Функция РазложитьСтроку(Стр)
Рез=Новый СписокЗначений;
Если _glRegExp<>Неопределено Тогда
Matches=_glRegExp.Execute(Стр);
Для СчетчикЦикла=0 По Matches.Count()-1 Цикл
Match=Matches.Item(СчетчикЦикла);
Зн=СокрЛП(Match.Value);
Если Прав(Зн,1)="," Тогда
Зн=Сред(Зн,1,СтрДлина(Зн)-1)
КонецЕсли;
Зн = СтрЗаменить(Зн, ";", ",");
Рез.Добавить(Зн)
КонецЦикла;
Возврат Рез;
Иначе
Возврат Рез;
КонецЕсли
КонецФункции

сообственно нужно только поменять регулярное выражением.

Sadovnikov 28.12.2011 10:06

10-gematogen > Перечитай (8), а?

Uho 28.12.2011 10:07

7-gematogen > наверное, выбрали самый оптимальный "формат данных"...

gematogen 28.12.2011 10:07

есть файл выгруженный из 7ки в текстовик, я его обрабатываю в 8ке. Вариант изменения формата обмена не рассматривается.

Sadovnikov 28.12.2011 10:14

13-gematogen > Последний раз спрашиваю - зачем? Что тебе из той информации нужно?? И для чего???

gematogen 28.12.2011 10:17

14-Sadovnikov > ответил ведь в (13)
нужно из строки в текстовике созданной в 7ке с помощью ЗначениеВСтроку собрать обратно СписокЗначений в 8ке

Uho 28.12.2011 10:21

15-gematogen > и для того, чтобы распарсить строку списка значений, нужны регулярные выражения?

gematogen 28.12.2011 10:23

16-Uho > да

Uho 28.12.2011 10:30

имхо, из пушки по воробьям

Reaper 28.12.2011 10:54

Очередная птица высокого полета считает себя умнее всех и не хочет учить КД. Ну и пусть [filolog]трахается[/filolog] - это его собственный выбор.

gematogen 28.12.2011 10:56

19-Reaper > умней других себя никто не считает, считал бы за советом не обратился


Текущее время: 09:47. Часовой пояс GMT +3.