2012-03-30 7 views
2

Можно создать дубликат:
Count specific character occurances in stringПодсчитайте количество вхождений символа в строке?

У меня есть разделители в строке, что я должен проверить. Как я могу подсчитать вхождения этого символа. На данный момент у меня есть следующая функция.

Private Shared Function CountChars(ByVal value As String) As Integer 
    Dim count = 0 
    For Each c As Char In value 
     If c = "$"c Then 
      count += 1 
     End If 
    Next 
    Return count 
End Function 

Любое альтернативное решение, которое выглядит лучше?

+1

http://stackoverflow.com/questions/5193893/count-specific- character-entries-in-string имеет ваш ответ – Marco

+0

Ваш код в порядке :) Возможно, сделайте его общим, указав char как параметр. – Bas

ответ

6

Или вы можете использовать LINQ ..

Private Function CountChars(ByVal value As String) As Integer 

    Return value.ToCharArray().Count(Function(c) c = "$"c) 

End Function 

Как Meta-Knight указал он может быть сокращен до:

value.Count(Function(c) c = "$"c) 
+2

Хороший ответ, но вы можете удалить '.ToCharArray()', который не нужен! –

+1

Я бы сказал, что функция CountChars даже не нужна, потому что код такой короткий. Вы можете просто вызвать метод Count напрямую. –

+0

Я предпочитаю ... 'Value.Split (« $ »c) .Length-1' –

1

Вы можете проверить количество происшествий еще одним способом. См. Приведенный ниже код, если вы найдете его лучше, вы можете его использовать.

Dim Occurrences As Integer 
    Dim Start As Integer 
    Dim Found As Integer 
    Do 
     Start = Found + 1 
     Found = InStr(Start, "ENTERTAINMENT", "E") 
     If Found = 0 Then Exit Do 
     Occurrences += 1 
    Loop 
2

простейшим и самым универсальным способом я могу думать :

Private Shared Function CountChars(ByVal value As String, Byval delim as String) As Integer 

    Return Len(value) - Len(Replace(value, delim, "")) 

End Function