Имя: Пароль:
1C
1С v8
Разложение строки через RegExp
0 Prilepsky
 
22.12.11
02:35
Функция РазложитьСтрокуВМассив(Строка, Разделитель = ";") Экспорт
   RegExp = Новый COMОбъект("VBScript.RegExp");    // создаем объект для работы с регулярными выражениями
   
   //Параметры:
   RegExp.MultiLine = Ложь;  // истина — текст многострочный, ложь — одна строка
   RegExp.Global = Истина;   // истина — поиск по всей строке, ложь — до первого совпадения
   RegExp.IgnoreCase = Ложь; // истина — игнорировать регистр строки при поиске
   
   //Разбор строки вида 1,СЛОВО,(1+2); Маска для разделителя ',' [^\,]*"
   RegExp.Pattern = "[^\" + Разделитель + "]+";
   Matches = RegExp.Execute (Строка);
   
   Массив = Новый Массив;
   
   Для Сч = 0 По Matches.Count - 1 Цикл
       Массив.Добавить(Matches.Item(Сч).Value);
   КонецЦикла;
   
   RegExp = Неопределено;
   
   Возврат Массив;
КонецФункции

Есть строка из 16 параметров, некоторые из них пустые.  
Как сделать, чтобы эта функция учитывала пустые параметры? Возможно ли это вообще?
А то стандартная процедура "РазложитьСтрокуВМассив" долго выполняет разложение.
1 Ursus maritimus
 
22.12.11
05:16
СтрЗаменить(Строка,";",Символы.ПС);

СтрЧислоСтрок();
СтрПолучитьСтроку();
2 Amiralnar
 
22.12.11
06:37
Я в RegExp новичок, но могу предложить следующее:

...
RegExp.Pattern = ",,";
Matches = RegExp.Replace(Строка, ", ,");
RegExp.Pattern = "[^\" + Разделитель + "]+";
Matches = RegExp.Execute (Строка);
...
3 Amiralnar
 
22.12.11
06:40
Для случая нечетных запятых, ",,,", реплейс повторить еще раз.
Основная теорема систематики: Новые системы плодят новые проблемы.