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

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

Найти номер строки в многострочной строке

Найти номер строки в многострочной строке
Я
   ildary
 
26.09.18 - 09:59
Уважаемые специалисты, подскажите пожалуйста, как решается такая задача:

Стр1 = "Строка11
|Строка12
|Строка2
|Строка3
|Строка4";

Стр2 = "Строка2
|Строка3";

Как получить номер строки Стр2 в Стр1? Особенно с учетом того, что Стр2 сама многострочная.
 
 
   s03
 
1 - 26.09.18 - 10:02
1. Цикл по строкам и сравнение
2. СтрЧислоВхождений(Лев(Стр1, Найти(Стр1, Стр2)), Символы.ПС) что-то вроде этого
   Индиго
 
2 - 26.09.18 - 10:02
Найти(Стр1,Стр2)

Если я правильно стелепатировал твое косноязычие 80 лвл...
   Индиго
 
3 - 26.09.18 - 10:03
по крайней мере
Найти("раз"+Символы.ПС+"Два"+Символы.ПС+"Три","Два"+Символы.ПС+"Три")
дает 5
   ildary
 
4 - 26.09.18 - 10:05
(3) для Вашего и моего примера мне нужно, чтобы вернулось 3: номер строки, а не номер символа в строке.
   PR
 
5 - 26.09.18 - 10:06
(0) Посчитай количество переносов строки в тексте с начала до точки нахождения твоего текста
   ildary
 
6 - 26.09.18 - 10:07
(5) я Вас правильно понял? Сначала находим позицию в строке через Найти(), потом обрезаем исходную строку через Лев() - и в ней считаем Символы.ВК? Красивая идея, спасибо!!!
   Фрэнки
 
7 - 26.09.18 - 10:26
з.ы. Прикольный алгоритм. Можно нарисовать. Не знаю только насколько часто он будет нужен, есть ли в нем смысл кроме простого упражнения :)

С вложенным циклом нужно делать
   Фрэнки
 
8 - 26.09.18 - 10:29
Стр1 = массив строк
Стр2 = массив строк
Внешний цикл по массиву Стр2 с поиском текущей подстроки в Стр1, затем вложенным циклом по Стр2 с продолжением сравнения подстрок из Стр2 с подстроками из продолжений найденных подстрок из Стр1
   Сияющий в темноте
 
9 - 26.09.18 - 10:29
Через Текст.ПолучитьСтроку должно быстро получиться,в основном цикле ищем первую строку второго текста,а в добавочном сиавниваем остальные строки.
также как поиск подстроки в строке по символам,только вместо символов у вас строки.
   ildary
 
10 - 26.09.18 - 10:31
(7) Мне это потребовалось для парсинга текста запросов.

(8) Спасибо, тоже вариант.
 
 Рекламное место пустует
   Ненавижу 1С
 
11 - 26.09.18 - 10:35
Строки =
"1
|2
|3";

Текст = Новый ТекстовыйДокумент;
Текст.ДобавитьСтроку(Строки);

Сообщить(Текст.ПолучитьСтроку(2));
   Фрэнки
 
12 - 26.09.18 - 10:40
(10) там главной проблемой будет еще продолжение поиска, когда искомый шаблон в исходном тексте может встречаться несколько раз. Получение первого вхождения - получится - это в другом описании в (9) еще указано. А вот нужно ли получать остальные вхождения? Такое надо дополнительно предусмотреть.
   PR
 
13 - 26.09.18 - 10:42
(6) Да
Даже не так
Просто тупо получаем количество строк в получившейся строке
   Вафель
 
14 - 26.09.18 - 10:42
Есть метод СтрРазделить - превращает строку в массив, а там уже легко искать номер
   Фрэнки
 
15 - 26.09.18 - 11:03
(13) самый правильный способ! Реально, короче этой записи код не придумаешь!
   ЕщеОдинПрограммист
 
16 - 26.09.18 - 11:25
п = Найти(стр1, стр2);
к = Нопределено;
Если п > 0 Тогда
п = СтрКоличествоСтрок(Лев(стр1,п-1));
КонецЕсли;
   ЕщеОдинПрограммист
 
17 - 26.09.18 - 11:26
п = Найти(стр1, стр2);
НомСтр = Нопределено;
Если п > 0 Тогда
НомСтр = СтрКоличествоСтрок(Лев(стр1,п-1));
КонецЕсли;
   1Сергей
 
18 - 26.09.18 - 11:49
коротко не значит просто. Может, другому прогу будет сложно разобраться с налёту

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