Files
hiscaler-gox/bytex/byte.go

91 lines
1.4 KiB
Go
Raw Permalink Normal View History

2025-04-08 19:16:39 +02:00
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
}