Имя: Пароль:
1C
1С v8
Найти номер строки в многострочной строке
0 ildary
 
26.09.18
09:59
Уважаемые специалисты, подскажите пожалуйста, как решается такая задача:

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

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

Как получить номер строки Стр2 в Стр1? Особенно с учетом того, что Стр2 сама многострочная.
1 s03
 
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
4 ildary
 
26.09.18
10:05
(3) для Вашего и моего примера мне нужно, чтобы вернулось 3: номер строки, а не номер символа в строке.
5 PR
 
26.09.18
10:06
(0) Посчитай количество переносов строки в тексте с начала до точки нахождения твоего текста
6 ildary
 
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
Через Текст.ПолучитьСтроку должно быстро получиться,в основном цикле ищем первую строку второго текста,а в добавочном сиавниваем остальные строки.
также как поиск подстроки в строке по символам,только вместо символов у вас строки.
10 ildary
 
26.09.18
10:31
(7) Мне это потребовалось для парсинга текста запросов.

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

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

Сообщить(Текст.ПолучитьСтроку(2));
12 Фрэнки
 
26.09.18
10:40
(10) там главной проблемой будет еще продолжение поиска, когда искомый шаблон в исходном тексте может встречаться несколько раз. Получение первого вхождения - получится - это в другом описании в (9) еще указано. А вот нужно ли получать остальные вхождения? Такое надо дополнительно предусмотреть.
13 PR
 
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));
КонецЕсли;
18 1Сергей
 
26.09.18
11:49
коротко не значит просто. Может, другому прогу будет сложно разобраться с налёту
Ошибка? Это не ошибка, это системная функция.