|
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