Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Как обрезать строку с определенным условием?

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

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

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


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует