|
374 | 374 | КонецПроцедуры |
375 | 375 |
|
376 | 376 | Функция МногострочнаяСтрокаСодержитПодстрокуБезУчетаНачальныхКонечныхПробеловВПодстроках(Знач Строка, Знач Подстрока, СообщениеОшибки = "") |
377 | | - ПерваяСтрока = СокрЛП(СтрПолучитьСтроку(Подстрока, 1)); |
378 | | - НашлиПервуюСтроку = Ложь; |
379 | | - Для Счетчик = 1 По СтрЧислоСтрок(Строка) Цикл |
380 | | - ОчереднаяСтрока = СокрЛП(СтрПолучитьСтроку(Строка, Счетчик)); |
381 | | - НашлиПервуюСтроку = Найти(ОчереднаяСтрока, ПерваяСтрока) <> 0; |
382 | | - Если НашлиПервуюСтроку Тогда |
383 | | - Прервать; |
| 377 | + СтартоваяПозиция = 1; |
| 378 | + Пока Истина Цикл // ищем первый совпадающий блок во всей строке |
| 379 | + ПерваяСтрока = СокрЛП(СтрПолучитьСтроку(Подстрока, 1)); |
| 380 | +// Сообщить("СтартоваяПозиция + <" + СтартоваяПозиция + ">"); |
| 381 | +// Сообщить("ПерваяСтрока + <" + ПерваяСтрока + ">"); |
| 382 | + НашлиПервуюСтроку = Ложь; |
| 383 | + Для Счетчик = СтартоваяПозиция По СтрЧислоСтрок(Строка) Цикл |
| 384 | + ОчереднаяСтрока = СокрЛП(СтрПолучитьСтроку(Строка, Счетчик)); |
| 385 | + // Сообщить("ОчереднаяСтрока + <" + ОчереднаяСтрока + ">"); |
| 386 | + |
| 387 | + НашлиПервуюСтроку = Найти(ОчереднаяСтрока, ПерваяСтрока) <> 0; |
| 388 | + Если НашлиПервуюСтроку Тогда |
| 389 | + Прервать; |
| 390 | + КонецЕсли; |
| 391 | + КонецЦикла; |
| 392 | + Если Не НашлиПервуюСтроку Тогда |
| 393 | + СообщениеОшибки = СтрШаблон("Не нашли первую же подстроку <%1>", ПерваяСтрока); |
| 394 | + Возврат Ложь; |
384 | 395 | КонецЕсли; |
385 | | - КонецЦикла; |
386 | | - Если Не НашлиПервуюСтроку Тогда |
387 | | - СообщениеОшибки = СтрШаблон("Не нашли первую же подстроку <%1>", ПерваяСтрока); |
388 | | - Возврат Ложь; |
389 | | - КонецЕсли; |
390 | 396 |
|
391 | | - СчетчикЧтоИщем = 2; |
392 | | - Для Счетчик = Счетчик+1 По СтрЧислоСтрок(Строка) Цикл |
393 | | - ОчереднаяСтрока = СокрЛП(СтрПолучитьСтроку(Строка, Счетчик)); |
394 | | - ЧтоИщем = СокрЛП(СтрПолучитьСтроку(Подстрока, СчетчикЧтоИщем)); |
395 | | - Поз = Найти(ОчереднаяСтрока, ЧтоИщем); |
396 | | - Если Поз = 0 Тогда |
397 | | - СообщениеОшибки = СтрШаблон("Не нашли подстроку № %1 <%2>", СчетчикЧтоИщем, ЧтоИщем); |
398 | | - Возврат Ложь; |
399 | | - Иначе |
| 397 | + Нашли = Истина; |
| 398 | + СчетчикЧтоИщем = 1;//2; |
| 399 | + Для Счетчик = Счетчик+1 По СтрЧислоСтрок(Строка) Цикл |
400 | 400 | СчетчикЧтоИщем = СчетчикЧтоИщем + 1; |
401 | 401 | Если СчетчикЧтоИщем > СтрЧислоСтрок(Подстрока) Тогда |
402 | 402 | Возврат Истина; |
403 | 403 | КонецЕсли; |
| 404 | + ОчереднаяСтрока = СокрЛП(СтрПолучитьСтроку(Строка, Счетчик)); |
| 405 | + // Сообщить(" ОчереднаяСтрока + <" + ОчереднаяСтрока + ">"); |
| 406 | + ЧтоИщем = СокрЛП(СтрПолучитьСтроку(Подстрока, СчетчикЧтоИщем)); |
| 407 | + // Сообщить(" ЧтоИщем + <" + ЧтоИщем + ">"); |
| 408 | + Если ПустаяСтрока(ОчереднаяСтрока) Тогда |
| 409 | + Если Не ПустаяСтрока(ЧтоИщем) Тогда |
| 410 | + СчетчикЧтоИщем = СчетчикЧтоИщем + 1; |
| 411 | + КонецЕсли; |
| 412 | + Продолжить; |
| 413 | + КонецЕсли; |
| 414 | + Поз = Найти(ОчереднаяСтрока, ЧтоИщем); |
| 415 | + Если Поз = 0 Тогда |
| 416 | + СообщениеОшибки = СтрШаблон("Не нашли подстроку № %1 <%2>", СчетчикЧтоИщем, ЧтоИщем); |
| 417 | + Нашли = Ложь; |
| 418 | + Прервать; |
| 419 | + КонецЕсли; |
| 420 | + КонецЦикла; |
| 421 | + Если Нашли Или СчетчикЧтоИщем > СтрЧислоСтрок(Подстрока) Тогда |
| 422 | + Возврат Истина; |
404 | 423 | КонецЕсли; |
| 424 | + СтартоваяПозиция = Счетчик; |
405 | 425 | КонецЦикла; |
406 | | - Возврат СчетчикЧтоИщем > СтрЧислоСтрок(Подстрока); |
| 426 | + Возврат Ложь; |
407 | 427 | КонецФункции |
408 | 428 |
|
409 | 429 | Функция ПредставлениеЗначения() |
|
0 commit comments