下面这些函数来自于strings包,这里介绍一些我平常经常用到的函数,更详细的请参考官方的文档。
一、字符串操作常用函数介绍
1、Contains
1func Contains(s, substr string) bool 2功能:字符串s中是否包含substr,返回bool值 3
示例:
1fmt.Println(strings.Contains("seafood", "foo")) 2 3fmt.Println(strings.Contains("seafood", "bar")) 4 5fmt.Println(strings.Contains("seafood", "")) 6 7fmt.Println(strings.Contains("", "")) 8
执行结果:
1true 2false 3true 4true 5
2、Join
1func Join(a \[\]string, sep string) string 2功能:字符串链接,把slice a通过sep链接起来
示例:
1s := \[\]string{"foo", "bar", "baz"} 2fmt.Println(strings.Join(s, ", "))
执行结果:
1foo, bar, baz 2
3、Index
1func Index(s, sep string) int 2功能:在字符串s中查找sep所在的位置,返回位置值,找不到返回-1 3
示例:
1 fmt.Println(strings.Index("chicken", "ken")) 2 3 fmt.Println(strings.Index("chicken", "dmr")) 4
执行结果:
14 2-1 3
4、Repeat
1func Repeat(s string, count int) string 2功能:重复s字符串count次,最后返回重复的字符串 3
示例:
1 fmt.Println("ba" + strings.Repeat("na", 2)) 2
执行结果:
1banana 2
5、Replace
1func Replace(s, old, new string, n int) string 2功能:在s字符串中,把old字符串替换为new字符串,n表示替换的次数,小于0表示全部替换 3
示例:
1fmt.Println(strings.Replace("oink oink oink", "k", "ky", 2)) 2 3fmt.Println(strings.Replace("oink oink oink", "oink", "moo", -1)) 4
执行结果:
1oinky oinky oink 2 3moo moo moo 4
6、Split
1func Split(s, sep string) \[\]string 2功能:把s字符串按照sep分割,返回slice 3
示例:
1fmt.Printf("%q\\n", strings.Split("a,b,c", ",")) 2fmt.Printf("%q\\n", strings.Split("a man a plan a canal panama", "a ")) 3fmt.Printf("%q\\n", strings.Split(" xyz ", "")) 4fmt.Printf("%q\\n", strings.Split("", "Bernardo O'Higgins"))
#执行结果:
1\["a" "b" "c"\] 2\["" "man " "plan " "canal panama"\] 3\[" " "x" "y" "z" " "\] 4\[""\] 5
7、Trim
1func Trim(s string, cutset string) string 2功能:在s字符串的头部和尾部去除cutset指定的字符串 3
示例:
1 fmt.Printf("\[%q\]", strings.Trim(" !!! Achtung !!! ", "! ")) 2
执行结果:
1\["Achtung"\] 2
8、Fields
示例:
1func Fields(s string) \[\]string 2功能:去除s字符串的空格符,并且按照空格分割返回slice 3
执行结果:
1Fields are: \["foo" "bar" "baz"\] 2
以上应用综合示例:
1package main 2 3import ( 4 "fmt" 5 "strings" 6) 7 8func main() { 9 //"hellogo"中是否包含"hello", 包含返回true, 不包含返回false 10 fmt.Println(strings.Contains("hellogo", "hello")) 11 fmt.Println(strings.Contains("hellogo", "abc")) 12 13 //Joins 组合 14 s := \[\]string{"abc", "hello", "mike", "go"} 15 buf := strings.Join(s, "x") 16 fmt.Println("buf = ", buf) 17 18 //Index, 查找子串的位置 19 fmt.Println(strings.Index("abcdhello", "hello")) 20 fmt.Println(strings.Index("abcdhello", "go")) //不包含子串返回-1 21 22 //重复多少次,这里重复3次 23 buf = strings.Repeat("go", 3) 24 fmt.Println("buf = ", buf) //"gogogo" 25 26 //Split 以指定的分隔符拆分 27 buf = "hello@abc@go@mike" 28 s2 := strings.Split(buf, "@") 29 fmt.Println("s2 = ", s2) 30 31 //Trim去掉两头的字符 32 buf = strings.Trim(" are u ok? ", " ") //去掉2头空格 33 fmt.Printf("buf = #%s#\\n", buf) 34 35 //去掉空格,把元素放入切片中 36 s3 := strings.Fields(" are u ok? ") 37 //fmt.Println("s3 = ", s3) 38 for i, data := range s3 { 39 fmt.Println(i, ", ", data) 40 } 41 42}
执行结果:
1true 2false 3buf = abcxhelloxmikexgo 44 5-1 6buf = gogogo 7s2 = \[hello abc go mike\] 8buf = #are u ok?# 90 , are 101 , u 112 , ok? 12
