Как найти количество случаев слэша из струн - PullRequest
23 голосов
/ 13 февраля 2012

Как найти количество вхождений символа прямой косой черты (/) в строке с помощью макроса Excel VBA?

Ответы [ 7 ]

36 голосов
/ 29 апреля 2014

Старый вопрос, но я подумал, что добавлю к качеству ответа ответ, найденный на форуме Excel. По-видимому, счет также можно найти с помощью.

    count =Len(string)-Len(Replace(string,"/",""))

Полный кредит за ответ предоставляется первоначальному автору по адресу: http://www.ozgrid.com/forum/showthread.php?t=45651

16 голосов
/ 13 февраля 2012

Используйте следующую функцию, как в count = CountChrInString(yourString, "/").

'''
''' Returns the count of the specified character in the specified string.
'''
Public Function CountChrInString(Expression As String, Character As String) As Long
'
' ? CountChrInString("a/b/c", "/")
'  2
' ? CountChrInString("a/b/c", "\")
'  0
' ? CountChrInString("//////", "/")
'  6
' ? CountChrInString(" a / b / c ", "/")
'  2
' ? CountChrInString("a/b/c", " / ")
'  0
'
    Dim iResult As Long
    Dim sParts() As String

    sParts = Split(Expression, Character)

    iResult = UBound(sParts, 1)

    If (iResult = -1) Then
    iResult = 0
    End If

    CountChrInString = iResult

End Function
13 голосов
/ 25 августа 2016
Function CountOfChar(str as string, character as string) as integer
      CountOfChar = UBound(Split(str, character))
End Function
1 голос
/ 20 декабря 2018

Мне нравится ответ Сантоша Дивакара, поэтому я расширил его, чтобы учесть возможность, когда вы хотите проверить не только один символ, разделив результат на длину символов поиска, например:

Function Num_Characters_In_String(Input_String As String, Search_Character As String) As Integer
'Returns the number of times a specified character appears in an input string by replacing them with an empty string
'   and comparing the two string lengths. The final result is then divided by the length of the Search_Character to
'   provide for multiple Search Characters.

    Num_Characters_In_String = (Len(Input_String) - Len(Replace(Input_String, Search_Character, ""))) / Len(Search_Character)

End Function

Как пример, результат

Num_Characters_In_String("One/Two/Three/Four//", "//")

дает вам 1, потому что в конце предложения есть только двойной слеш.

1 голос
/ 09 февраля 2018

Кстати, если вы в производительности, следующее на 20% быстрее, чем с помощью разделения или замены для определения количества:

Private Function GetCountOfChar( _
  ByRef ar_sText As String, _
  ByVal a_sChar As String _
) As Integer
  Dim l_iIndex As Integer
  Dim l_iMax As Integer
  Dim l_iLen As Integer

  GetCountOfChar = 0
  l_iMax = Len(ar_sText)
  l_iLen = Len(a_sChar)
  For l_iIndex = 1 To l_iMax
    If (Mid(ar_sText, l_iIndex, l_iLen) = a_sChar) Then 'found occurrence
      GetCountOfChar = GetCountOfChar + 1
      If (l_iLen > 1) Then l_iIndex = l_iIndex + (l_iLen - 1) 'if matching more than 1 char, need to move more than one char ahead to continue searching
    End If
  Next l_iIndex
End Function
0 голосов
/ 09 июля 2019

Это однострочная версия для использования, когда вы не хотите вызывать отдельную функцию.Это просто сжатая версия CountChrInString и некоторых других, перечисленных выше.

? UBound(Split("abcabcabc", "cd"), 1)

Это вернет 0. Если вы измените «cd» на «ab», то вернет 3. Он также работает с переменными.Обратите внимание, что если проверяемая строка (abcabc ...) пуста, она вернет -1.

0 голосов
/ 18 августа 2016

Это простое решение для макросов VBA Excel.

Function CharCount(str As String, chr As String) As Integer
     CharCount = Len(str) - Len(Replace(str, chr, ""))
End Function
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...