strings包

字符串操作通常是一种高频操作,在golang中专门提供了strings包来做这种工作。

Compare 方法

``比较两个字符串的字典序,返回值0表示a==b,-1表示a < b,1表示a > b.通常我们应该运算符==,<,>来比较连个字符串,代码更简介,意思更明细,效率也更高。

func Compare(a, b string) int
strings.Compare("a", "b") //-1
strings.Compare("a", "a") //0
strings.Compare("b", "a") //1

Contains 方法

Contains方法用来判断字符串s中是否包含子串substr

func Contains(s, substr string) bool
strings.Contains("seafood", "foo") //true

HasPrefix和HasSuffix方法

HasPrefixHasSuffix用来判断字符串中是否包含包含前缀和后缀

func HasPrefix(s, prefix string) bool
func HasSuffix(s, suffix string) bool
strings.HasPrefix("Gopher", "Go") //true
strings.HasSuffix("Amigo", "go") //true

Index 方法和 LastIndex方法

Index返回子串sep在字符串s中第一次出现的位置,如果找不到,则返回 -1。 LastIndex返回子串sep在字符串s中最后一次出现的位置,如果找不到,则返回 -1。

func Index(s, substr string) int
func LastIndex(s, substr string) int
strings.Index("chicken", "ken") //4
strings.Index("chicken", "dmr") //-1

strings.Index("go gopher", "go") //0
strings.LastIndex("go gopher", "go") //3
strings.LastIndex("go gopher", "rodent") //-1

Join方法

Joina中的子串连接成一个单独的字符串,子串之间用sep拼接

func Join(elems []string, sep string) string
s := []string{"foo", "bar", "baz"}
fmt.Println(strings.Join(s, ", "))  //foo, bar, baz

Repeat方法

Repeatcount个字符串s连接成一个新的字符串。

func Repeat(s string, count int) string
strings.Repeat("na", 2)//nana

Replace和ReplaceAll方法

ReplaceReplaceAll方法为字符串替换方法,Replace返回s的副本,并将副本中的old字符串替换为new字符串,替换次数为n次,如果n为 -1则全部替换。

func Replace(s, old, new string, n int) string
func ReplaceAll(s, old, new string) string
strings.Replace("oink oink oink", "k", "ky", 2)  //oinky oinky oink
strings.Replace("oink oink oink", "oink", "moo", -1) // moo moo moo
strings.ReplaceAll("oink oink oink", "oink", "moo") // moo moo moo 功能同上

Split 方法

Split方法以sep为分隔符,将s切分成多个子串,结果中不包含 sep 本身

func Split(s, sep string) []string
strings.Split("a,b,c", ",") //["a" "b" "c"]
strings.Split("a man a plan a canal panama", "a ") //["" "man " "plan " "canal panama"]
strings.Split(" xyz ", "") //[" " "x" "y" "z" " "]
strings.Split("", "Bernardo O'Higgins") //[""]

Trim、TrimSpace、TrimPrefix,TrimSuffix方法

Trim将删除s首尾连续的包含在cutset中的字符 TrimSpace将删除s首尾连续的的空白字符 TrimPrefix删除s头部的prefix字符串 TrimSuffix 删除s尾部的suffix字符串

func Trim(s, cutset string) string
func TrimSpace(s string) string
func TrimPrefix(s, prefix string) string
func TrimSuffix(s, suffix string) string
strings.Trim("¡¡¡Hello, Gophers!!!", "!¡") //Hello, Gophers
strings.TrimSpace(" \t\n Hello, Gophers \n\t\r\n")//Hello, Gophers

var s = "¡¡¡Hello, Gophers!!!"
strings.TrimPrefix(s, "¡¡¡Hello, ")  //Gophers!!!
strings.TrimSuffix(s, ", Gophers!!!") //¡¡¡Hello

参考资料

go strings官方文档