gifts2017

Рубим строку на куски...

Опубликовал Андрей Вахрин (dolter) в раздел Программирование - Практика программирования

Из строки получаем массив (список значений) или необходимую часть строки с разделителями.
Yемного изменив код можем получить и "обычный" массив и список. Сейчас возвращает либо часть строки по номеру либо COMSafeArray...

Функция ИзСтрокиСРазделителями(Знач стр, ном =0, р =";", ВернутьМассив = Ложь) Экспорт

            Если ВернутьМассив Тогда

                        TextScript=" 

                        |Function Run

                        |          run = split("""+стр+""", """+р+""")

                        |End Function

                        |";

            Иначе

                        TextScript=" 

                        |Function Run

                        |          myarr = split("""+стр+""", """+р+""")

                        |          run = myarr("+СокрЛП(ном-1) +")

                        |End Function

                        |";

            КонецЕсли;

           

            ScrptCtrl         = Новый COMОбъект("MSScriptControl.ScriptControl");

            ScrptCtrl.Language    ="vbscript";

            ScrptCtrl.AddCode(TextScript);   

            Возврат ScrptCtrl.Run("Run");

КонецФункции

См. также

Подписаться Добавить вознаграждение
Комментарии
1. Алексей Константинов (alexk-is) 07.01.10 17:25
(0) Зачем так сложно? В 7.7 это всего 2 строчки кода...
СЗ = СоздатьОбъект("СписокЗначений");
СЗ.ИзСтрокиСРазделителями("""" + СтрЗаменить(СтрЗаменить(ИсходнаяСтрока, """", ""), ",", """,""") + """");

Правда теряются кавычки, но в приведенном примере наличие в строке кавычек также станет проблемой. Не решенной проблемой...
2. Андрей Вахрин (dolter) 07.01.10 17:39
(1) в 7.7 да... название функции оттуда же взято.
А для работы с строками, содержащими кавычкаи, есть СтрЗаменить(стр, """", "'") перед подачей в скрипт и потом обратно перед возвратом результата :)