Имя: Пароль:
1C
1С v8
Как обрезать строку с определенным условием?
0 palima
 
20.09.18
14:17
Подскажите пожалуйста, как обрезать строку произвольной длины с 5 символа до символа "%"? Спасибо!
1 palima
 
20.09.18
14:17
"%" уже не нужен, т.е. НЕ включительно
2 bolobol
 
20.09.18
14:20
Сред(стр, 5, Найти(стр, "%") -5)
3 bolobol
 
20.09.18
14:22
Сред(стр, 5, Найти(Сред(стр, 5), "%") -1) - если % может быть в символах 1-4. Не знаю, что будет, если % нет
4 bolobol
 
20.09.18
14:23
но % можно добавить, если хотим до конца строки:
Сред(стр, 5, Найти(Сред(стр, 5) + "%", "%") -1)
5 palima
 
20.09.18
14:35
(4) до 5 симовола не имеет значение есть или нет. Нужно искать только начиная с 5. после 5 символа % будет всегда, но неизвестно каким по счету именно.
6 Timon1405
 
20.09.18
14:45
Что должно вернуться для строки
"пять5процент%ов"?
"п%ть5процент%ов%"?
7 palima
 
20.09.18
14:48
(6) "процент"
в обоих случаях
8 bolobol
 
20.09.18
14:52
(7) Разве не "5процент" в обоих случаях? Ведь "с 5-ого символа", а не "после 5-ого символа"
9 FIXXXL
 
20.09.18
14:57
(0) берешь Прав(ТвояСтрока, СтрДлина-5);
результат РазложитьСтрокуВМассив()
первыей элемент массива - искомое
10 palima
 
20.09.18
14:58
(8) да, "5процент".
11 palima
 
20.09.18
14:58
(9) я пыталась так:
Сред(Строка,5,Лев(Строка,Найти(Строка,"%")));
12 palima
 
20.09.18
14:59
Сред(Строка,143,Лев(Строка,Найти(Строка,"*"))-1);
13 palima
 
20.09.18
14:59
ой,
Сред(Строка,5,Лев(Строка,Найти(Строка,"%"))-1);
14 palima
 
20.09.18
14:59
ну тоесть как бы затык в том чтобы начать искать первый % с определенного символа
15 palima
 
20.09.18
15:00
и все что с этого символа до первого попавшегося % вырезать
16 bolobol
 
20.09.18
15:00
Ответ дан в (3), расширенный в (4), суженый в (2)
17 bolobol
 
20.09.18
15:02
(15) Вот тут - непоняточка... Вырезать? с "этого" - какого? до первого попавшегося %... - Это совсем другая задача, там вряд ли получится "5процент"
18 FIXXXL
 
20.09.18
15:04
(13)
ТвояСтрока = "пять5процент%ов";
Рез = Прав(ТвояСтрока, СтрДлина(ТвояСтрока)-5);
Сообщить(Рез);
ПозицияПроцента = Найти(Рез,"%");
Сообщить(ПозицияПроцента);
РезКон = Лев(Рез,ПозицияПроцента-1);
Сообщить(РезКон);
19 palima
 
20.09.18
15:08
ну вот на конкретном примере: есть строка
"%3%2%777643%нужный_кусок%3434"
Нам необходимо вырезать фразу "нужный_кусок". Но это ткусок может быть разной длины. Начинается он всегда с одного места - в данном случае с 13 символа. И размер этого куска динамический до символа %
20 bolobol
 
20.09.18
15:11
Повторюсь, тогда: Ответ дан в (3), расширенный в (4), суженный в (2)
21 bolobol
 
20.09.18
15:14
Причём, на примере видно, что в (3) - необходимый и достаточный.

P.S. В коде могут содержаться ошибки, не влияющие на принципиальную модель решения. Код поставляется как есть. Его использование, равно как и не использование, вы берёте на свой страх и риск. Автор овнокода не несёт ответственности и, более того - прямо заявляет об отказе от неё. Всё что несёт автор - этот бред и тот овнокод))
22 palima
 
20.09.18
15:17
Воспользовалась вариантом (3). Вроде работает. насколько этот овнокод самодостаточен, покажет время) Спасибо большое за помощь!
23 Сияющий в темноте
 
20.09.18
15:18
Овнокодеры нам не нужны.
стр-строка с данными

стрПоиск=Сред(стр,5);
Позиция=Найти(стрПоиск,"%");
Если Позиция>0 тогда
  стрРезультат=Лев(стрПоиск,Позиция-1);
Иначе
  стрРезультат=стрПоиск;
КонецЕсли;
24 vova1122
 
20.09.18
15:37
(19) а начало НужногоКуска всегда начинается с одной позиции (как в примере с 13-той) или может начинаться с разной? Помню когда-то у меня была похожая ситуация. Нужно было переименовать файлы (удалить в названии файла с начала и с конца файла некий ненужный мусор). Причем вначале и в конце разных файлов было разное количество ненужных символов.
Помнится даже тут также тему создавал
25 palima
 
20.09.18
15:44
(24) нет, начало всегда фиксированное
26 AlvlSpb
 
20.09.18
15:57
(25) Самое простое и правильное в (23) Только
стрПоиск=Сред(стр,6); чтобы убрать первый % перед нужной строкой, ну или стрПоиск=Сред(стр,13); если утверждаете что начало всегда одинаково