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

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 65 11.01.17 08:50 Сейчас в теме
(1)
Необходимо выдрать только вот эту часть - Текст1 Текст2 Текст3, при этом *число* всегда разное и перед Текст1 всегда пустая строка.

Start *число*

Текст1


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

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

Прикрепленные файлы:
+
6. Seraf1no 11.01.17 09:10 Сейчас в теме
(5) Я обрабатываю много файлов в одной папке и количество строк всегда разное.
+
7. olegmedvedev 65 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 9 11.01.17 11:04 Сейчас в теме
(10) Я ничего не понял в решении. Ну, вы прочитали строку Старт и одну пустую. И?
Неполный код, видимо.
+
12. Seraf1no 11.01.17 12:24 Сейчас в теме
(11) у меня читает все строки, перед условием идет
стр = файл.ПрочитатьСтроку();
, далее в цикле уже идут не относящиеся к вопросу преобразования строк.
+
13. necropunk 9 11.01.17 12:33 Сейчас в теме
(12) А, ну так в вашем примере после условия "Если Счетчик < 3" ПрочитатьСтроку() стоит.
+
Внимание! Тема сдана в архив

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