mirror of
https://github.com/golang/go
synced 2024-11-26 13:38:20 -07:00
bytes, strings: add ContainsFunc
Fixes #54386. Change-Id: I78747da337ed6129e4f7426dd0483a644bed82e3 Reviewed-on: https://go-review.googlesource.com/c/go/+/460216 TryBot-Result: Gopher Robot <gobot@golang.org> Reviewed-by: Matthew Dempsky <mdempsky@google.com> Reviewed-by: Ian Lance Taylor <iant@google.com> Run-TryBot: hopehook <hopehook@golangcn.org> Auto-Submit: Ian Lance Taylor <iant@golang.org>
This commit is contained in:
parent
43f9b826c3
commit
0b3f58c48e
2
api/next/54386.txt
Normal file
2
api/next/54386.txt
Normal file
@ -0,0 +1,2 @@
|
||||
pkg bytes, func ContainsFunc([]uint8, func(int32) bool) bool #54386
|
||||
pkg strings, func ContainsFunc(string, func(int32) bool) bool #54386
|
@ -86,6 +86,11 @@ func ContainsRune(b []byte, r rune) bool {
|
||||
return IndexRune(b, r) >= 0
|
||||
}
|
||||
|
||||
// ContainsFunc reports whether any of the UTF-8-encoded code points r within b satisfy f(r).
|
||||
func ContainsFunc(b []byte, f func(rune) bool) bool {
|
||||
return IndexFunc(b, f) >= 0
|
||||
}
|
||||
|
||||
// IndexByte returns the index of the first instance of c in b, or -1 if c is not present in b.
|
||||
func IndexByte(b []byte, c byte) int {
|
||||
return bytealg.IndexByte(b, c)
|
||||
|
@ -1847,6 +1847,17 @@ func TestContainsRune(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestContainsFunc(t *testing.T) {
|
||||
for _, ct := range ContainsRuneTests {
|
||||
if ContainsFunc(ct.b, func(r rune) bool {
|
||||
return ct.r == r
|
||||
}) != ct.expected {
|
||||
t.Errorf("ContainsFunc(%q, func(%q)) = %v, want %v",
|
||||
ct.b, ct.r, !ct.expected, ct.expected)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var makeFieldsInput = func() []byte {
|
||||
x := make([]byte, 1<<20)
|
||||
// Input is ~10% space, ~10% 2-byte UTF-8, rest ASCII non-space.
|
||||
|
@ -69,6 +69,11 @@ func ContainsRune(s string, r rune) bool {
|
||||
return IndexRune(s, r) >= 0
|
||||
}
|
||||
|
||||
// ContainsFunc reports whether any Unicode code points r within s satisfy f(r).
|
||||
func ContainsFunc(s string, f func(rune) bool) bool {
|
||||
return IndexFunc(s, f) >= 0
|
||||
}
|
||||
|
||||
// LastIndex returns the index of the last instance of substr in s, or -1 if substr is not present in s.
|
||||
func LastIndex(s, substr string) int {
|
||||
n := len(substr)
|
||||
|
@ -1535,6 +1535,17 @@ func TestContainsRune(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestContainsFunc(t *testing.T) {
|
||||
for _, ct := range ContainsRuneTests {
|
||||
if ContainsFunc(ct.str, func(r rune) bool {
|
||||
return ct.r == r
|
||||
}) != ct.expected {
|
||||
t.Errorf("ContainsFunc(%q, func(%q)) = %v, want %v",
|
||||
ct.str, ct.r, !ct.expected, ct.expected)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
var EqualFoldTests = []struct {
|
||||
s, t string
|
||||
out bool
|
||||
|
Loading…
Reference in New Issue
Block a user