File tree Expand file tree Collapse file tree 6 files changed +49
-0
lines changed
Expand file tree Collapse file tree 6 files changed +49
-0
lines changed Original file line number Diff line number Diff line change @@ -1411,6 +1411,8 @@ private OperationCode BuiltInFunctionCode(Token token)
14111411 return OperationCode . EmptyStr ;
14121412 case Token . StrReplace :
14131413 return OperationCode . StrReplace ;
1414+ case Token . StrEntryCount :
1415+ return OperationCode . StrEntryCount ;
14141416 case Token . Year :
14151417 return OperationCode . Year ;
14161418 case Token . Month :
Original file line number Diff line number Diff line change @@ -132,6 +132,7 @@ static LanguageDef()
132132 _stringToToken . Add ( "кодсимвола" , Token . ChrCode ) ;
133133 _stringToToken . Add ( "пустаястрока" , Token . EmptyStr ) ;
134134 _stringToToken . Add ( "стрзаменить" , Token . StrReplace ) ;
135+ _stringToToken . Add ( "стрчисловхождений" , Token . StrEntryCount ) ;
135136
136137 _stringToToken . Add ( "год" , Token . Year ) ;
137138 _stringToToken . Add ( "месяц" , Token . Month ) ;
@@ -329,6 +330,7 @@ enum Token
329330 ChrCode ,
330331 EmptyStr ,
331332 StrReplace ,
333+ StrEntryCount ,
332334 Year ,
333335 Month ,
334336 Day ,
Original file line number Diff line number Diff line change @@ -53,6 +53,7 @@ private static void InitParametersInfo()
5353 map . Add ( OperationCode . ChrCode , SingleDefaultParamInfo ) ;
5454 map . Add ( OperationCode . EmptyStr , SingleDefaultParamInfo ) ;
5555 map . Add ( OperationCode . StrReplace , StrReplaceParamInfo ) ;
56+ map . Add ( OperationCode . StrEntryCount , TwoDefaultParamsInfo ) ;
5657 // date
5758 map . Add ( OperationCode . Year , SingleDefaultParamInfo ) ;
5859 map . Add ( OperationCode . Month , SingleDefaultParamInfo ) ;
Original file line number Diff line number Diff line change @@ -79,6 +79,7 @@ enum OperationCode
7979 ChrCode ,
8080 EmptyStr ,
8181 StrReplace ,
82+ StrEntryCount ,
8283 Year ,
8384 Month ,
8485 Day ,
Original file line number Diff line number Diff line change @@ -434,6 +434,7 @@ private void InitCommands()
434434 ChrCode ,
435435 EmptyStr ,
436436 StrReplace ,
437+ StrEntryCount ,
437438 Year ,
438439 Month ,
439440 Day ,
@@ -1613,6 +1614,28 @@ private void StrReplace(int arg)
16131614 NextInstruction ( ) ;
16141615 }
16151616
1617+ private void StrEntryCount ( int arg )
1618+ {
1619+ var what = _operationStack . Pop ( ) . AsString ( ) ;
1620+ var where = _operationStack . Pop ( ) . AsString ( ) ;
1621+
1622+ var pos = where . IndexOf ( what ) ;
1623+ var entryCount = 0 ;
1624+ while ( pos >= 0 )
1625+ {
1626+ entryCount ++ ;
1627+ var nextIndex = pos + what . Length ;
1628+ if ( nextIndex >= where . Length )
1629+ break ;
1630+
1631+ pos = where . IndexOf ( what , nextIndex ) ;
1632+ }
1633+
1634+ _operationStack . Push ( ValueFactory . Create ( entryCount ) ) ;
1635+
1636+ NextInstruction ( ) ;
1637+ }
1638+
16161639 private void Year ( int arg )
16171640 {
16181641 var date = _operationStack . Pop ( ) . AsDate ( ) . Year ;
Original file line number Diff line number Diff line change 4343 ВсеТесты.Добавить("Тест_ДолженПроверитьЧтоФункцияМаксНеСравниваетРазнотипныеЗначения" );
4444
4545 ВсеТесты.Добавить("Тест_ДолженПроверитьЧтоКопированиеФайлаПерезаписываетПриемник" );
46+ ВсеТесты.Добавить("Тест_ДолженПроверитьСтрЧислоВхожденийВхожденийНет" );
47+ ВсеТесты.Добавить("Тест_ДолженПроверитьСтрЧислоВхождений" );
4648
4749 Возврат ВсеТесты;
4850КонецФункции
338340 УдалитьФайлы (Источник);
339341
340342КонецПроцедуры
343+
344+ Процедура Тест_ДолженПроверитьСтрЧислоВхожденийВхожденийНет () Экспорт
345+
346+ ГдеИскать = "Здесь был Ежик. Ежик любит грибы, Я Ежик!!!" ;
347+ ЧтоИскать = "колбаса" ;
348+
349+ юТест.ПроверитьРавенство(0 , СтрЧислоВхождений (ГдеИскать, ЧтоИскать));
350+
351+ КонецПроцедуры
352+
353+ Процедура Тест_ДолженПроверитьСтрЧислоВхождений () Экспорт
354+
355+ ГдеИскать = "Здесь был Ежик. Ежик любит грибы, Я Ежик!!!" ;
356+ ЧтоИскать = "Ежик" ;
357+
358+ юТест.ПроверитьРавенство(3 , СтрЧислоВхождений (ГдеИскать, ЧтоИскать));
359+
360+ КонецПроцедуры
You can’t perform that action at this time.
0 commit comments