fix(bytes, strings):

fix Remove, RemoveAll
This commit is contained in:
pyihe
2022-04-08 15:25:48 +08:00
parent ed1e6c234b
commit 32327dff31
5 changed files with 79 additions and 16 deletions

View File

@@ -22,8 +22,8 @@ func String(b []byte) string {
return *(*string)(unsafe.Pointer(&b))
}
// BytesEqual 判断两个字节切片每个元素是否相等
func BytesEqual(a, b []byte) bool {
// Equal 判断两个字节切片每个元素是否相等
func Equal(a, b []byte) bool {
aLen, bLen := len(a), len(b)
if aLen != bLen {
return false
@@ -61,12 +61,34 @@ func Reverse(b []byte) {
}
}
// Remove 从b中删除ele
func Remove(b []byte, ele byte) {
for i := range b {
if ele == b[i] {
b = append(b[:i], b[i+1:]...)
// Remove 对于eles的每个元素只删除一次
func Remove(b *[]byte, eles ...byte) {
if b == nil || len(*b) == 0 {
return
}
for _, e := range eles {
for i := 0; i < len(*b); {
if e == (*b)[i] {
copy((*b)[i:], (*b)[i+1:])
(*b)[len(*b)-1] = 0
*b = (*b)[:len(*b)-1]
break
} else {
i++
}
}
}
}
// RemoveAll 删除所有的ele
func RemoveAll(b *[]byte, eles ...byte) {
for _, e := range eles {
for i := 0; i < len(*b); {
if (*b)[i] == e {
*b = append((*b)[:i], (*b)[i+1:]...)
} else {
i++
}
}
}
}

View File

@@ -1,6 +1,10 @@
package files
import "os"
import (
"encoding/json"
"io/ioutil"
"os"
)
// NewPath 判断目录是否存在,如果不存在,则新建一个目录
func NewPath(targetPath string) error {
@@ -14,3 +18,13 @@ func NewPath(targetPath string) error {
}
return nil
}
// LoadJSONFile 加载JSON文件
func LoadJSONFile(file string, dst interface{}) error {
content, err := ioutil.ReadFile(file)
if err != nil {
return err
}
err = json.Unmarshal(content, dst)
return err
}

1
go.mod
View File

@@ -13,4 +13,5 @@ require (
github.com/vmihailenco/msgpack/v5 v5.3.4 // indirect
go.uber.org/zap v1.18.1 // indirect
golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e // indirect
gopkg.in/ini.v1 v1.66.4 // indirect
)

2
go.sum
View File

@@ -63,6 +63,8 @@ google.golang.org/protobuf v1.26.0 h1:bxAC2xTBsZGibn2RTntX0oH50xLsqy1OxA9tTL3p/l
google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/ini.v1 v1.66.4 h1:SsAcf+mM7mRZo2nJNGt8mZCjG8ZRaNGMURJw7BsIST4=
gopkg.in/ini.v1 v1.66.4/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

View File

@@ -82,8 +82,8 @@ func IsEmpty(s string) bool {
return s == ""
}
// SliceEqual 判断两个字符串切片值是否相等
func SliceEqual(a, b []string) bool {
// Equal 判断两个字符串切片值是否相等
func Equal(a, b []string) bool {
aLen, bLen := len(a), len(b)
if aLen != bLen {
return false
@@ -122,11 +122,35 @@ func Reverse(s []string) {
}
// Remove 从s中删除第一个ele
func Remove(ele string, s []string) {
for i := range s {
if s[i] == ele {
s = append(s[:i], s[i+1:]...)
func Remove(s *[]string, eles ...string) {
if s == nil || len(*s) == 0 {
return
}
for _, e := range eles {
for i := 0; i < len(*s); {
if e == (*s)[i] {
copy((*s)[i:], (*s)[i+1:])
(*s)[len(*s)-1] = ""
*s = (*s)[:len(*s)-1]
break
} else {
i++
}
}
}
}
// RemoveAll 删除所有的eles
func RemoveAll(s *[]string, eles ...string) {
for _, e := range eles {
for i := 0; i < len(*s); {
if (*s)[i] == e {
copy((*s)[i:], (*s)[i+1:])
(*s)[len(*s)-1] = ""
*s = (*s)[:len(*s)-1]
} else {
i++
}
}
}
}