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
|
|
@ -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)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue