Имя: Пароль:
1C
1С v8
разделить строку до и после символа
, ,
0 dvrk
 
09.12.21
12:22
туплю, у меня есть строка текст/текст1, я хочу получить текст и текст1 отдельно
текст получаю
Разделитель = СтрНайти(СсылкаНаОбъект.Комментарий,"/");
Лев(СсылкаНаОбъект.Комментарий, Разделитель - 1);
а текст1 как получить?
1 Волшебник
 
модератор
09.12.21
12:23
Сред
2 Kassern
 
09.12.21
12:25
(0) СП вам в помощь
Глобальный контекст (Global context)
СтрРазделить (StrSplit)
Синтаксис:
СтрРазделить(<Строка>, <Разделитель>, <ВключатьПустые>)
Параметры:
<Строка> (обязательный)
Тип: Строка.
Разделяемая строка.
<Разделитель> (обязательный)
Тип: Строка.
Строка символов, каждый из которых является индивидуальным разделителем.
<ВключатьПустые> (необязательный)
Тип: Булево.
Указывает необходимость включать в результат пустые строки, которые могут образоваться в результате разделения исходной строки.
Значение по умолчанию: Истина.
Возвращаемое значение:
Тип: Массив.
Массив со строками, которые получились в результате разделения исходной строки.
Описание:
Разделяет строку на части по указанным символам-разделителям.
3 dvrk
 
09.12.21
12:32
(2) а = СтрРазделить(СсылкаНаОбъект.Комментарий,"/")
у меня всегда а[0] будет ДО / а[1] ПОСЛЕ / ?
4 dvrk
 
09.12.21
12:33
(2) я пробовал СтрРазделить получилось, но не совсем понял в каком порядке будут в массиве элементы каждый раз, поэтому спросил как через прав лев сделать
5 Kassern
 
09.12.21
12:33
(3) именно так
6 Kassern
 
09.12.21
12:34
(5) слева на права будут элементы добавляться в массив после разделения
7 Kassern
 
09.12.21
12:34
*на право
8 dvrk
 
09.12.21
12:35
(6) ааа, ну тогда не нужно лев прав, я просто не нашел в каком порядке будут элементы и подумал что могут быть не всегда по порядку, спасибо большое
9 DmitriyDI
 
09.12.21
12:53
(0) СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок("текст/текст1", "/")
10 DmitriyDI
 
09.12.21
12:55
(9)
Функция РазложитьСтрокуВМассивПодстрок(Знач Значение, Знач Разделитель = ",", Знач ПропускатьПустыеСтроки = Неопределено,
    СокращатьНепечатаемыеСимволы = Ложь) Экспорт
    
    Если СтрДлина(Разделитель) = 1
        И ПропускатьПустыеСтроки = Неопределено
        И СокращатьНепечатаемыеСимволы Тогда
        
        Результат = СтрРазделить(Значение, Разделитель, Ложь);
        Для Индекс = 0 По Результат.ВГраница() Цикл
            Результат[Индекс] = СокрЛП(Результат[Индекс])
        КонецЦикла;
        Возврат Результат;
        
    КонецЕсли;
    
    Результат = Новый Массив;
    
    // Для обеспечения обратной совместимости.
    Если ПропускатьПустыеСтроки = Неопределено Тогда
        ПропускатьПустыеСтроки = ?(Разделитель = " ", Истина, Ложь);
        Если ПустаяСтрока(Значение) Тогда
            Если Разделитель = " " Тогда
                Результат.Добавить("");
            КонецЕсли;
            Возврат Результат;
        КонецЕсли;
    КонецЕсли;
    //
    
    Позиция = СтрНайти(Значение, Разделитель);
    Пока Позиция > 0 Цикл
        Подстрока = Лев(Значение, Позиция - 1);
        Если Не ПропускатьПустыеСтроки Или Не ПустаяСтрока(Подстрока) Тогда
            Если СокращатьНепечатаемыеСимволы Тогда
                Результат.Добавить(СокрЛП(Подстрока));
            Иначе
                Результат.Добавить(Подстрока);
            КонецЕсли;
        КонецЕсли;
        Значение = Сред(Значение, Позиция + СтрДлина(Разделитель));
        Позиция = СтрНайти(Значение, Разделитель);
    КонецЦикла;
    
    Если Не ПропускатьПустыеСтроки Или Не ПустаяСтрока(Значение) Тогда
        Если СокращатьНепечатаемыеСимволы Тогда
            Результат.Добавить(СокрЛП(Значение));
        Иначе
            Результат.Добавить(Значение);
        КонецЕсли;
    КонецЕсли;
    
    Возврат Результат;
    
КонецФункции
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший