Имя: Пароль:
1C
 
Поиск подстроки в строке
0 lg2marvel
 
25.08.14
14:16
Добрый день, банальная задача: поиск подстроки в строке, но хоть убейте не могу сообразить как лучше сделать?

Строка следующего вида:
0;3;FP8101100344;419500040;2949845254;2072300900;4110425667;0;1;FP8101100344;

В ней передаются параметры и функцией хочу получать параметр
Функция ВернутьПараметр(Стр,Пар)

Стр - соответственно строка
Пар - номер параметра

Вернуть надо кусочек, например при Пар = 3, вернуть "FP8101100344"

Или можно ли такую строку выгрузить в список значений (если да то как) чтоб обращаться к результату как-то так:

Сп = ВернутьПараметр(Стр)
Сп.ПолучитьЗначение(3)
1 Timon1405
 
25.08.14
14:20
БСП - СтроковыеФункцииКлиентСервер
2 salvator
 
25.08.14
14:20
Помещать подстроку по разделителю ";" в массив и возвращать номер элемента
3 Garykom
 
гуру
25.08.14
14:20
(0) мдааааа....

эта есть такая замечательная функция СтрЗаменить(ИсхСтрока, ПодстрокаПоиска, ПодстрокаЗамены)

вот если ее заюзать с ПодстрокаЗамены = Символы.ПС то будет тебе в результате многострочная строка ))

которая СтрПолучитьСтроку(МногостросчнаяСтрока, НомерПараметра) даст нужный параметр
4 salvator
 
25.08.14
14:21
+(2) Функция РазложитьСтрокуВМассивПодстрок(Знач Стр, Разделитель = ",") Экспорт
    
    МассивСтрок = Новый Массив();
    Если Разделитель = " " Тогда
        Стр = СокрЛП(Стр);
        Пока 1=1 Цикл
            Поз = Найти(Стр,Разделитель);
            Если Поз=0 Тогда
                МассивСтрок.Добавить(Стр);
                Возврат МассивСтрок;
            КонецЕсли;
            МассивСтрок.Добавить(Лев(Стр,Поз-1));
            Стр = СокрЛ(Сред(Стр,Поз));
        КонецЦикла;
    Иначе
        ДлинаРазделителя = СтрДлина(Разделитель);
        Пока 1=1 Цикл
            Поз = Найти(Стр,Разделитель);
            Если Поз=0 Тогда
                МассивСтрок.Добавить(Стр);
                Возврат МассивСтрок;
            КонецЕсли;
            МассивСтрок.Добавить(Лев(Стр,Поз-1));
            Стр = Сред(Стр,Поз+ДлинаРазделителя);
        КонецЦикла;
    КонецЕсли;
    
КонецФункции
5 zulu_mix
 
25.08.14
14:21
в многострочную строку грузи.

мнстрока = стрзаменить(исходнаястрока,";",символы.пс);
возврат получитьстроку(мнстрока,номерпараметра-1);
6 lg2marvel
 
25.08.14
14:32
Дошло, можно закрывать

Функция ВернутьПараметр(Стр)
    СтрРазб = Стр;
    Рзд = ";";
    Сп = СоздатьОбъект("СписокЗначений");
    Инд = Найти(СтрРазб, Рзд);
    Пока Инд <> 0 Цикл
        ТекСтр = Сред(СтрРазб, 1, Инд - 1);
        Сп.ДобавитьЗначение(СокрЛП(ТекСтр));
        СтрРазб = Сред(СтрРазб, Инд + 1);
        Инд = Найти(СтрРазб, Рзд);
    КонецЦикла;
    Возврат Сп
КонецФункции
7 lg2marvel
 
25.08.14
14:33
(5) Спасибо
8 lg2marvel
 
25.08.14
14:34
Всем спасибо.
9 Wobland
 
25.08.14
14:35
(6) это делается по-другому. на здоровье
10 Timon1405
 
25.08.14
14:35
Зачем изобретать ведосипеды? Своя рубашка греет лучше, чем чужая шуба?
11 lg2marvel
 
25.08.14
14:49
(9) учту
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.