Описание функции


CountString2

Подсчитывает число вхождений в строке без учёта регистра.

CountString2(String$, StringToCount$)

Параметры

String$ Строка, в которой искать
StringToCount$ Искомая строка

Возвращаемое значение

Возвращает число вхождений

Примечания

Оригинальная функция CountString() не чувствительна к регистру, поэтому пришлось делать аналог учитывающий регистр.

Пример

EnableExplicit

Procedure CountString2(String$, StringToCount$)
    Protected Pos, Occurrences
    Pos = FindString(String$, StringToCount$, 1, #PB_String_NoCase)
    If Pos
        Occurrences = 1
        Repeat
            Pos = FindString(String$, StringToCount$, Pos + 1, #PB_String_NoCase)
            If Pos > 0
                Occurrences + 1
            Else
                Break
            EndIf
        ForEver
        ProcedureReturn Occurrences
    EndIf
EndProcedure


Procedure CountString3(String$, StringToCount$, Mode = #PB_String_NoCase)
    Protected Pos, Occurrences
    If Mode & #PB_String_NoCase
        Pos = FindString(String$, StringToCount$, 1, Mode)
        If Pos
            Occurrences = 1
            Repeat
                Pos = FindString(String$, StringToCount$, Pos + 1, Mode)
                If Pos > 0
                    Occurrences + 1
                Else
                    Break
                EndIf
            ForEver
            ProcedureReturn Occurrences
        EndIf
    Else
        ProcedureReturn CountString(String$ , StringToCount$) ; не чувствителен к регистру
    EndIf
EndProcedure


Define String$ = "Is this a simple string?"
Debug CountString2(String$, "i", #PB_String_NoCase)
Debug CountString3(String$, "i")
Debug CountString(String$, "i")

Debug CountString2(String$, "z", #PB_String_NoCase)
Debug CountString3(String$, "z")
Debug CountString(String$, "z")