diff options
Diffstat (limited to 'src/strings/strings.go')
| -rw-r--r-- | src/strings/strings.go | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/strings/strings.go b/src/strings/strings.go index 02c032046b..7d3ed37edd 100644 --- a/src/strings/strings.go +++ b/src/strings/strings.go @@ -8,6 +8,7 @@ package strings import ( + "internal/bytealg" "unicode" "unicode/utf8" ) @@ -72,12 +73,16 @@ func hashStrRev(sep string) (uint32, uint32) { return hash, pow } -// countGeneric implements Count. -func countGeneric(s, substr string) int { +// Count counts the number of non-overlapping instances of substr in s. +// If substr is an empty string, Count returns 1 + the number of Unicode code points in s. +func Count(s, substr string) int { // special case if len(substr) == 0 { return utf8.RuneCountInString(s) + 1 } + if len(substr) == 1 { + return bytealg.CountString(s, substr[0]) + } n := 0 for { i := Index(s, substr) |
