![]() |
|
Как обрезать строку с определенным условием? | ☑ | ||
---|---|---|---|---|
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); если утверждаете что начало всегда одинаково |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |