2012-02-13 27 views

Trả lời

10

Sử dụng chức năng dưới đây, như trong 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 
+0

Không phải là một fan hâm mộ lớn của ký hiệu hungarian, nhưng nhờ cho ý kiến ​​được thêm vào :-) – assylias

17

Câu hỏi cũ, nhưng tôi nghĩ tôi sẽ thêm vào chất lượng câu trả lời bằng câu trả lời tôi tìm thấy tại diễn đàn nổi bật. Rõ ràng số lượng cũng có thể được tìm thấy bằng cách sử dụng.

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

tín dụng đầy đủ cho câu trả lời đi vào tác giả ban đầu tại địa chỉ: http://www.ozgrid.com/forum/showthread.php?t=45651

+1

Ha! Tôi chỉ nghĩ về điều đó, nhưng tôi đến đây để xem liệu có một giải pháp tốt hơn không. – GuitarPicker

0

Đây là một giải pháp dễ dàng cho VBA Excel Macros.

Function CharCount(str As String, chr As String) As Integer 
    CharCount = Len(str) - Len(Replace(str, chr, "")) 
End Function 
+0

Và điều gì khiến câu trả lời của bạn khác với Santhosh Divakar? –

3
Function Count(str as string, character as string) as integer 
     Count = UBound(Split(str, character)) 
End Function 
0

BTW, nếu bạn là thành hiệu suất, sau đây là nhanh hơn so với sử dụng phân chia hoặc thay thế để xác định số lượng 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 
Các vấn đề liên quan