Имя: Пароль:
1C
1С v8
Из строки выделить слово.
0 lirt82
 
13.02.26
10:52
Есть строка
НаименованиеОфиса = "РФ, 119334, (Москва, ул. Вавилова, дом № 5, корпус 3, помещ. 2П, этаж 3)";
по условию задачи необходимо выделить из этой строки название города. В примере это "Москва", шаблон строки строгий,
"хххххххх(<НазваниеГорода>,ххххххххххххх)" х - любой символ, включая пробел.
т.е. необходимо сформировать название города начиная от первой скобки "(" и заканчивая первой запятой после этой скобки.
Начал писать функцию, но не могу дальше продолжить:) прошу подсказать.

Функция НайтиГород(НаименованиеОфиса) Экспорт
    
    Если ПустаяСтрока(НаименованиеОфиса) Тогда
        Возврат Неопределено;
    КонецЕсли;
    
    // Обойдем все
    Для ТекСимвол = 1 По СтрДлина(НаименованиеОфиса) Цикл
        
        // Получим текущий элемент, сохранив в переменную
        ТекЭлемент = Сред(НаименованиеОфиса, ТекСимвол, 1);
        
        Если ТекЭлемент <> "(" Тогда
            Продолжить;
        Иначе
1 Kuzmich123
 
13.02.26
10:52
(0) в 8.3.23 появилось

СтрНайтиПоРегулярномуВыражению (StrFindByRegularExpression)

Возможно, это тебе поможет
2 evgen48
 
13.02.26
10:54
МассивПодстрок = СтрРазделить(НаименованиеОфиса,",", истина);
    Город = СОКРЛП(СтрЗаменить(МассивПодстрок[2],"(",""));
3 1cVandal
 
13.02.26
10:57
если шаблон строгий, то находишь скобку через
ПозицияНачала = СтрНайти(Наименованиеофиса, "(") + 1;

Это позиция с которой начинается твой город, берешь все что правее нее
СтрокаПарамПамПам = Сред(ПозицияНачала,СтрДлина(НаименованиеОфиса) -СтрДлина(ПозицияНачала ))

Далее ищешь позицию первой запятой после города через
ПозицияКонца = СтрНайти(СтрокаПарамПамПам, ",")

Ну и берешь только город
Город = Лев(СтрокаПарамПамПам, ПозицияКонца)
4 Ногаминебить
 
13.02.26
10:58
Через СтрНайти ищешь номер символа скобки, через Сред отрезаешь кусок после нее, через СтрНайти ищешь запятую, через Лев отрезаешь свой город. :)
5 ass1c
 
13.02.26
11:05
(0) Черновой алгоритм для теста, отладки и улучшения:

    Результат         = "";
    НаименованиеОфиса = "РФ, 119334, (Москва, ул. Вавилова, дом № 5, корпус 3, помещ. 2П, этаж 3)";
    
    ПозицияВхождения = СтрНайти(НаименованиеОфиса, "(");
    Если ПозицияВхождения Тогда
        
         ПозицияКонец = СтрНайти(Сред(НаименованиеОфиса, ПозицияВхождения + 1), ",");
        
         Если ПозицияКонец Тогда
            
              Результат = Сред(Сред(НаименованиеОфиса, ПозицияВхождения + 1), 1, ПозицияКонец - 1);
            
         КонецЕсли;
        
    КонецЕсли;
    
    Сообщить(Результат);
6 vbus
 
13.02.26
12:07
НаименованиеОфиса = "РФ, 119334, (Москва, ул. Вавилова, дом № 5, корпус 3, помещ. 2П, этаж 3)";   
Город = СтрНайтиПоРегулярномуВыражению(НаименованиеОфиса,"(?<=\().*?(?=,)").Значение;