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

Start *число*

Текст1


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

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

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

Вакансии

Разработчик 1С
Москва
зарплата от 100 000 руб. до 160 000 руб.
Полный день

Программист 1С
Москва
зарплата от 80 000 руб.
Полный день

Консультант-аналитик 1С
Санкт-Петербург
Полный день

Консультант-аналитик 1С
Москва
зарплата от 120 000 руб. до 120 000 руб.
Полный день

Удаленный ИТ-журналист
Санкт-Петербург
По совместительству