aboutsummaryrefslogtreecommitdiff
path: root/src/bytes/bytes.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/bytes/bytes.go')
-rw-r--r--src/bytes/bytes.go9
1 files changed, 7 insertions, 2 deletions
diff --git a/src/bytes/bytes.go b/src/bytes/bytes.go
index 9af177fa88..08d8260e9e 100644
--- a/src/bytes/bytes.go
+++ b/src/bytes/bytes.go
@@ -7,6 +7,7 @@
package bytes
import (
+ "internal/bytealg"
"unicode"
"unicode/utf8"
)
@@ -46,12 +47,16 @@ func explode(s []byte, n int) [][]byte {
return a[0:na]
}
-// countGeneric actually implements Count
-func countGeneric(s, sep []byte) int {
+// Count counts the number of non-overlapping instances of sep in s.
+// If sep is an empty slice, Count returns 1 + the number of UTF-8-encoded code points in s.
+func Count(s, sep []byte) int {
// special case
if len(sep) == 0 {
return utf8.RuneCount(s) + 1
}
+ if len(sep) == 1 {
+ return bytealg.Count(s, sep[0])
+ }
n := 0
for {
i := Index(s, sep)