strings包
/*
用来处理字符串的。
检索子串
格式化
比较大小
裁剪
炸碎
拼接
*/
1 package main
2
3 import (
4 "fmt"
5 "strings"
6 )
7
8 func main() {
9
10 //判断hello里有没有el字符
11 fmt.Println(strings.Contains("hello","el")) //true
12
13 //asshole里只要有任意一个hello的字符就为true
14 fmt.Println(strings.ContainsAny("hello","asshole")) //true
15
16 //判断是否包含任意字符,单个字符其实会转换成序号
17 fmt.Println(strings.ContainsRune("hello",'h')) //注意单引号 true
18
19
20 //字符和序号之间转换
21 fmt.Printf("%U
",'h') //U+0068
22 fmt.Printf("%c
",0x0068) //h
23
24
25 //直接拿序号进行判断
26 fmt.Println(strings.ContainsRune("hello",0x0068)) //true
27
28 //子串在大串里出现的序号是多少
29 fmt.Println(strings.Index("abcdef","a")) //0
30 fmt.Println(strings.Index("abcdef","d")) //3
31 fmt.Println(strings.Index("abcdef","g")) //-1
32
33 //子串任意是否在大串里包含,如果包含那么首位的序号显示出来
34 fmt.Println(strings.IndexAny("abcdef","fght")) //5
35
36 //查看这个序号是否在大串里出现,出现就显示序号,没有就-1
37 fmt.Println(strings.IndexRune("abcdef",0x0068)) //-1
38 fmt.Println(strings.IndexRune("abcdefh",0x0068)) //6
39
40
41 }
字符串格式化
1 package main
2
3 import (
4 "fmt"
5 "strings"
6 )
7
8 func main() {
9
10 fmt.Println(strings.ToUpper("HeLLO")) //全部变为大写 HELLO
11 fmt.Println(strings.ToLower("HeLLO")) //全部变为小写 hello
12 fmt.Println(strings.Title("hello")) //首字母大写 Hello
13
14 }
字符串比较大小
1 package main
2
3 import (
4 "fmt"
5 "strings"
6 )
7
8 func main() {
9
10 //比较首位字符的序号是否比后面首位字符大,如果不大就为-1
11 //如果首位俩个相同,会继续比较第二位的序号
12 fmt.Println(strings.Compare("a","b")) //-1
13 fmt.Println(strings.Compare("c","a")) //1
14 fmt.Println(strings.Compare("a","a")) //0
15
16 }
字符串的裁剪
1 package main
2
3 import (
4 "fmt"
5 "strings"
6 )
7
8 func main() {
9
10 //去掉头和尾的空格
11 fmt.Println(strings.TrimSpace(" aa bb cc ")) //aa bb cc
12
13 //去掉前缀
14 fmt.Println(strings.TrimPrefix("dddaa bb cc ", "ddd")) //aa bb cc
15
16 //去掉后缀
17 fmt.Println(strings.TrimSuffix("aa bb ccddd", "ddd")) //aa bb cc
18
19 //去掉头和尾的a 中间的a不去掉
20 fmt.Println(strings.Trim("aabaacaa", "a")) //baac
21
22 //只去头部
23 fmt.Println(strings.TrimLeft("aabaacaa", "a")) //baacaa
24
25 //只去尾部
26 fmt.Println(strings.TrimRight("aabaacaa", "a")) //aabaac
27
28 //根据后面的函数的判断,如果包含f或u就去掉,不包含的不去掉。
29 fmt.Println(strings.TrimFunc("uabcf", fileter)) //abc
30
31 }
32
33
34
35 //哪个字符返回True 哪个字符就上黑名单
36 func fileter(char rune) bool {
37 if char == 'f' || char == 'u' {
38 return true
39 } else {
40 return false
41 }
42 }
字符串炸碎
1 package main
2
3 import (
4 "fmt"
5 "strings"
6 )
7
8 func main() {
9
10 //整个字符串,以什么为分隔符,进行拆分
11 aa := strings.Split("i love you"," ")
12 fmt.Println(aa,len(aa)) //[i love you] 3
13
14
15 //整个字符串,以什么为分隔符,进行拆分 -1代表有多碎拆分多碎,如果数字为2 那么就炸2次,第一次是完整的,第二次是 I,love you 2段
16 bb := strings.SplitN("i love you"," ",-1)
17 fmt.Println(bb,len(bb)) //[i love you] 3
18
19 //循环查看拆分的每个字符串
20 for _,s := range bb{
21 fmt.Println(s)
22 }
23
24
25 //拆分把分隔符本身包含进去。
26 cc := strings.SplitAfter("i,love,you,me",",")
27 fmt.Println(cc,len(cc)) //[i, love, you, me] 4
28
29
30 //拆分把分隔符本身包含进去,炸几次
31 dd := strings.SplitAfterN("i,love,you,me",",",2)
32 fmt.Println(dd,len(dd)) //[i, love,you,me] 2
33
34
35 }
字符串拼接
1 package main
2
3 import (
4 "fmt"
5 "strings"
6 )
7
8 func main() {
9
10 //用爱心进行拼接
11 a1 := strings.Join([]string{"i","love","you"},"❤")
12 fmt.Println(a1) //i❤love❤you
13
14
15
16 }