utils包github地址:github.com/kirinlabs/utils
日常项目开发中少不了对字符串的各种处理,utils包中的str包含一些非常常用的工具方法,建议用go mod方式:
import "github.com/kirinlabs/uitls/str"
1,字符串截取
s := "hello github"
//从索引2开始,截取长度为3
str.Substr(s,2,3) //llo
//从索引2开始,截取到最后
str.Substr(s,2) //llo github
//从索引-1开始,截取到最后
str.Substr(s,-1) //b
//截取最后3个字符
str.Substr(s,-3) //hub
2,Before/BeforeLast/After/AfterLast操作
s := "github.com/kirinlabs/utils/str"
//获取第1个/之前的字符串
str.Before(s,"/") //github.com
//获取最后1个/之前的字符串
str.BeforeLast(s,"/") //github.com/kirinlabs/utils
//获取第1个/之后的字符串
str.After(s,"/") //kirinlabs/utils/str
//获取最后1个/之后的字符串
str.AfterLast(s,"/") //str
//如果想获取kirinlabs,则配合Before和After使用
str.Before(str.After(s,"/"),"/") //kirinlabs
//如果想获取utils
str.AfterLast(str.BeforeLast(s,"/"),"/") //utils
3,StartsWith和EndsWith操作
s := "github.com"
//以字符串开头,返回bool
str.StartsWith(s, "git") //true
str.StartsWith(s, "hub") //false
//以字符串结尾,返回bool
str.EndsWith(s, "com") //true
str.EndsWith(s, "co") //false
4,Go泛型转string
type User struct {
Id int
Name string
}
val := []interface{}{
1,
true,
nil,
"github",
map[string]string{},
[]string{},
&User{},
}
for _, v := range val {
fmt.Println(str.String(v))
}
//最终输出
1
true
github
{}
[]
{"Id":0,"Name":""}
5,Length
s := "Hello中国"
//返回字符个数
str.Length(s) //7
//GO内置len
len(s) //11
6,RuneIndex
s := "Hello中国"
//字符串开始的位置
str.RuneIndex(s, "中国") //5