mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
internal/bytealg: move Count to bytealg
Move bytes.Count and strings.Count to bytealg. Update #19792 Change-Id: I3e4e14b504a0b71758885bb131e5656e342cf8cb Reviewed-on: https://go-review.googlesource.com/98495 Run-TryBot: Keith Randall <khr@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
This commit is contained in:
parent
89ae7045f3
commit
45964e4f9c
18 changed files with 282 additions and 259 deletions
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue