Получить нужный кусок текста

1. Seraf1no 11.01.17 07:26 Сейчас в теме
Добрый день!
Возник следующий вопрос: есть текст такого формата

Start *число*

Текст1
Текст2
Текст3
Finish

Необходимо выдрать только вот эту часть - Текст1 Текст2 Текст3, при этом *число* всегда разное и перед Текст1 всегда пустая строка.

Пробовал и через "Найти", и парой способов с форума, ничего не получилось.
По теме из базы знаний
Найденные решения
10. Seraf1no 11.01.17 10:50 Сейчас в теме
(9) да, извиняюсь. Времени в обрез, вот код:
Счетчик = 1;
            Пока Стр <> Неопределено Цикл
                
                Если Счетчик < 3 Тогда
                Счетчик = Счетчик + 1;
                Стр = Файл.ПрочитатьСтроку();
                    Продолжить;
                КонецЕсли;


Показать
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. olegmedvedev 66 11.01.17 08:50 Сейчас в теме
(1)
Необходимо выдрать только вот эту часть - Текст1 Текст2 Текст3, при этом *число* всегда разное и перед Текст1 всегда пустая строка.

Start *число*

Текст1


а текст1 - всегда третья строка? тогда можно по индексу взять.
3. Seraf1no 11.01.17 08:52 Сейчас в теме
(2) Всегда четвертая, если быть точнее (я там одну строчку выше Старта не указал)
5. olegmedvedev 66 11.01.17 08:59 Сейчас в теме
(3)
Всегда четвертая, если быть точнее (я там одну строчку выше Старта не указал)

тогда можно по индексу найти
текст - ваш текст, индекс с 3 по интересующую вас строку
СтрТекста=СтрПолучитьСтроку(Текст,Индекс);

Прикрепленные файлы:
6. Seraf1no 11.01.17 09:10 Сейчас в теме
(5) Я обрабатываю много файлов в одной папке и количество строк всегда разное.
7. olegmedvedev 66 11.01.17 09:42 Сейчас в теме
(6) в (4) приведен рабочий пример же. можете его скопировать и использовать на свое усмотрение. если вм результат не в строку надо а в массив, то просто добавляйте построчно в массив, а не суммируйте
4. spacecraft 11.01.17 08:57 Сейчас в теме
(1) как вариант для 8.2:
ИсходнаяСтрока = "Что-то там
    |еще есть в начале
    |Start 1
    |
    |Текст1 
    |Текст2 
    |Текст3 
    |Finish
    |еще есть
    |в конце";
            
    СтрокаРезультат = "";
    СтрокаНайдена = Ложь;
    Для НомерСтроки = 1 По СтрЧислоСтрок(ИсходнаяСтрока) Цикл
        Если Не СтрокаНайдена Тогда
            Если Найти(СтрПолучитьСтроку(ИсходнаяСтрока,НомерСтроки), "Start") > 0 Тогда
                СтрокаНайдена = Истина;
                НомерСтроки = НомерСтроки + 1;
            КонецЕсли;
            Продолжить;
        КонецЕсли;
        Если (Найти(СтрПолучитьСтроку(ИсходнаяСтрока,НомерСтроки), "Finish") > 0) Тогда
            СтрокаНайдена = Ложь;
            Прервать;
        КонецЕсли;
        СтрокаРезультат = СтрокаРезультат + СтрПолучитьСтроку(ИсходнаяСтрока,НомерСтроки);
    КонецЦикла;        

Показать


Для 8.3 было бы проще и нагляднее.
8. Seraf1no 11.01.17 10:14 Сейчас в теме
Задачу решил самостоятельно, вопрос закрыт
9. spacecraft 11.01.17 10:16 Сейчас в теме
(8) жесть.
В таких случаях обычно приводят свое решение.
10. Seraf1no 11.01.17 10:50 Сейчас в теме
(9) да, извиняюсь. Времени в обрез, вот код:
Счетчик = 1;
            Пока Стр <> Неопределено Цикл
                
                Если Счетчик < 3 Тогда
                Счетчик = Счетчик + 1;
                Стр = Файл.ПрочитатьСтроку();
                    Продолжить;
                КонецЕсли;


Показать
11. necropunk 11 11.01.17 11:04 Сейчас в теме
(10) Я ничего не понял в решении. Ну, вы прочитали строку Старт и одну пустую. И?
Неполный код, видимо.
12. Seraf1no 11.01.17 12:24 Сейчас в теме
(11) у меня читает все строки, перед условием идет
стр = файл.ПрочитатьСтроку();
, далее в цикле уже идут не относящиеся к вопросу преобразования строк.
13. necropunk 11 11.01.17 12:33 Сейчас в теме
(12) А, ну так в вашем примере после условия "Если Счетчик < 3" ПрочитатьСтроку() стоит.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот