mirror of
https://github.com/junegunn/fzf.git
synced 2026-05-06 13:54:02 +08:00
34 lines
656 B
Go
34 lines
656 B
Go
//go:build !arm64 && !amd64
|
|
|
|
package algo
|
|
|
|
import "bytes"
|
|
|
|
// indexByteTwo returns the index of the first occurrence of b1 or b2 in s,
|
|
// or -1 if neither is present.
|
|
func IndexByteTwo(s []byte, b1, b2 byte) int {
|
|
i1 := bytes.IndexByte(s, b1)
|
|
if i1 == 0 {
|
|
return 0
|
|
}
|
|
scope := s
|
|
if i1 > 0 {
|
|
scope = s[:i1]
|
|
}
|
|
if i2 := bytes.IndexByte(scope, b2); i2 >= 0 {
|
|
return i2
|
|
}
|
|
return i1
|
|
}
|
|
|
|
// lastIndexByteTwo returns the index of the last occurrence of b1 or b2 in s,
|
|
// or -1 if neither is present.
|
|
func lastIndexByteTwo(s []byte, b1, b2 byte) int {
|
|
for i := len(s) - 1; i >= 0; i-- {
|
|
if s[i] == b1 || s[i] == b2 {
|
|
return i
|
|
}
|
|
}
|
|
return -1
|
|
}
|