|
Найти номер строки в многострочной строке | ☑ | ||
---|---|---|---|---|
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
|
коротко не значит просто. Может, другому прогу будет сложно разобраться с налёту
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |