91 lines
1.4 KiB
Go
91 lines
1.4 KiB
Go
package bytex
|
|
|
|
import (
|
|
"bytes"
|
|
"unsafe"
|
|
)
|
|
|
|
// IsEmpty Check byte is empty
|
|
func IsEmpty(b []byte) bool {
|
|
return len(b) == 0
|
|
}
|
|
|
|
func IsBlank(b []byte) bool {
|
|
return len(b) == 0 || len(bytes.TrimSpace(b)) == 0
|
|
}
|
|
|
|
func ToString(b []byte) string {
|
|
return *(*string)(unsafe.Pointer(&b))
|
|
}
|
|
|
|
func StartsWith(s []byte, ss [][]byte, caseSensitive bool) bool {
|
|
if ss == nil || len(ss) == 0 {
|
|
return true
|
|
}
|
|
|
|
has := false
|
|
if !caseSensitive {
|
|
s = bytes.ToLower(s)
|
|
}
|
|
for _, prefix := range ss {
|
|
if len(prefix) == 0 {
|
|
has = true
|
|
} else {
|
|
if !caseSensitive {
|
|
prefix = bytes.ToLower(prefix)
|
|
}
|
|
has = bytes.HasPrefix(s, prefix)
|
|
}
|
|
if has {
|
|
break
|
|
}
|
|
}
|
|
return has
|
|
}
|
|
|
|
func EndsWith(s []byte, ss [][]byte, caseSensitive bool) bool {
|
|
if ss == nil || len(ss) == 0 {
|
|
return true
|
|
}
|
|
|
|
has := false
|
|
if !caseSensitive {
|
|
s = bytes.ToLower(s)
|
|
}
|
|
for _, suffix := range ss {
|
|
if len(suffix) == 0 {
|
|
has = true
|
|
} else {
|
|
if !caseSensitive {
|
|
suffix = bytes.ToLower(suffix)
|
|
}
|
|
has = bytes.HasSuffix(s, suffix)
|
|
}
|
|
if has {
|
|
break
|
|
}
|
|
}
|
|
return has
|
|
}
|
|
|
|
func Contains(s []byte, ss [][]byte, caseSensitive bool) bool {
|
|
in := false
|
|
if !caseSensitive {
|
|
s = bytes.ToLower(s)
|
|
}
|
|
for _, substr := range ss {
|
|
if len(substr) == 0 {
|
|
in = true
|
|
} else {
|
|
if !caseSensitive {
|
|
substr = bytes.ToLower(substr)
|
|
}
|
|
in = bytes.Contains(s, substr)
|
|
}
|
|
if in {
|
|
break
|
|
}
|
|
}
|
|
return in
|
|
}
|