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