标准库-strings包

 

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 }