Go语言标准库strings包
strings包
strgins包用于字符串相关处理,使用频率较高,此处记录常用方法示例方便后续回顾。
更多详情可参考官网:https://studygolang.com/pkgdoc
package main import ( "strings" "fmt" ) func main() { //1.EqualFold strings.EqualFold(s,t string)bool // 使用EqualFold,您可以检查两个字符串是否相等。如果两个字符串相等,则返回输出true,如果两个字符串都不相等,则返回false fmt.Println(strings.EqualFold("tiger","tiger")) //true fmt.Println(strings.EqualFold("TiGer","tiger")) //true fmt.Println(strings.EqualFold("Tiger","ger")) //false fmt.Println(strings.EqualFold("TiGer-123","tiger-123")) //true //2.TrimSpace strings.TrimSpace(str string) string: 去掉字符串首尾空白字符,返回字符串 fmt.Println(strings.TrimSpace(" hello world !! ")) //3.HasPrefix strings.HasPrefix(s string, prefix string) bool: 判断字符串s是否以prefix开头 fmt.Println(strings.HasPrefix("hello world!!","he")) //true //4.HasSuffix strings.HasSuffix(s string, suffix string) bool: 判断字符串s是否以suffix结尾。 fmt.Println(strings.HasSuffix("hello golang","lang")) //true fmt.Println(strings.HasSuffix("hello golang","ng")) //true //5.Index strings.Index(s string, str string) int: 判断str在s中首次出现的位置,如果没有出现,则返回-1 fmt.Println(strings.Index("hello golang","ll")) //2 fmt.Println(strings.Index("hello golang","nihao")) //-1 //6.LastIndex strings.LastIndex(s string, str string) int: 判断str在s中最后出现的位置,如果没有出现,则返回-1 fmt.Println(strings.LastIndex("hello golang","o")) //7 //7. Replace strings.Replace(str string, old string, new string, n int): 字符串替换 //替换功能用字符串中的某些其他字符替换某些字符。n指定要在字符串中替换的字符数。如果n小于0,则替换次数数没有限制 fmt.Println(strings.Replace("hello golang hello python hello shell","ll","ww",0)) //为0,则不修改 fmt.Println(strings.Replace("hello golang hello python hello shell","ll","ww",1)) //从左到右,只修改1个 fmt.Println(strings.Replace("hello golang hello python hello shell","ll","ww",2)) //从左到右,只修改2个 fmt.Println(strings.Replace("hello golang hello python hello shell","ll","ww",-1)) //从左到右,修改所有匹配项 //8. Title strings.Title(s string) string // Title函数将每个单词的第一个字符转换为大写。 fmt.Println(strings.Title("hello golang")) //Hello Golang //9. ToTitle strings.ToTitle(s string) string将每个单词的所有字符转换为大写 //注:多数情况下 ToUpper 与 ToTitle 返回值相同,但在处理某些unicode编码字符则不同(暂时不用管) fmt.Println(strings.ToTitle("hello golang nihao")) //10. ToLower strings.ToLower(str string) string: 将每个单词的所有字符转换为小写 fmt.Println(strings.ToLower("HELLO GOLANG NIHAO")) //11. ToUpper strings.ToUpper(str string) string: 将每个单词的所有字符转换为大写 fmt.Println(strings.ToTitle("hello golang nihao")) //12. Contains strings.Contains(s, substr string) bool: 判断字符串s是否包含子串substr。 fmt.Println(strings.Contains("hello golang","golang")) //true fmt.Println(strings.Contains("hello golang","nihao")) //false fmt.Println(strings.Contains("hello golang","GOLANG")) //false //13. ContainsAny strings.ContainsAny(s,chars string)bool //判断字符串s是否包含字符串chars中的任一字符。 fmt.Println(strings.ContainsAny("hello Golang","g")) //true fmt.Println(strings.ContainsAny("hello Golang","l & a")) //true // Contains VS ContainsAny fmt.Println(strings.ContainsAny("Shell-12345","1-2")) // true fmt.Println(strings.Contains("Shell-12345","1-2")) // false //14. Count strings.Count(s, sep string) int: 返回字符串s中有几个不重复的sep子串。 //此函数计算字符串中字符/字符串/文本的不重叠实例的数量。 fmt.Println(strings.Count("ttiger","t")) //2 fmt.Println(strings.Count("ttiger","m")) //0 //15. Repeat strings.Repeat(str string, count int)string: 重复count次str // Repeat函数将字符串重复指定的次数,并返回一个新字符串,该字符串由字符串s的计数副本组成。Count指定将重复字符串的次数,必须大于或等于0 textString := "golang" fmt.Println(strings.Repeat(textString,5)) //golanggolanggolanggolanggolang fmt.Println("ba" + strings.Repeat("na",2)) //baaaaa fmt.Println("ba" + strings.Repeat(" ",2)) //baaaaa fmt.Println("22" + strings.Repeat("11",2)) //221111 //16. Trim strings.Trim(str string, cut string): 去掉字符串首尾cut字符 // trimlefit函数只从字符串s的左侧删除预定义字符cutset。 fmt.Println(strings.Trim("01234 56780","0")) //1234 5678 fmt.Println(strings.Trim("01234 56789","0")) //1234 56789 //17. TrimLeft strings.TrimLeft(str string, cut string): 去掉字符串首cut字符 fmt.Println(strings.TrimLeft("abcd efg","a")) //bcd efg //18. TrimRight strings.TrimRight(str string, cut string): 去掉字符串首cut字符 fmt.Println(strings.TrimRight("abcd efg","g")) //abcd ef //19. TrimPrefix strings.TrimPrefix(S string, prefix string) string //TrimPrefix函数从S字符串的开头删除前缀字符串。如果S不以前缀开头,则S将原封不动地返回 s := "i love china" fmt.Println(strings.TrimPrefix(s,"i")) // love china //20. Fields strings.Fields(str string) []string : 返回str空格分隔的所有子串的slice, //Fields函数将一个或多个连续空白字符的每个实例周围的字符串分解为一个切片 testString := "i love china" //字符串拆分 testArray := strings.Fields(testString) fmt.Println("testArray=",testArray) for _, v := range testArray { fmt.Println(v) } //21. FieldFunc strings.FieldsFunc(s string,f func(rune bool)[] string //FieldsFunc函数在每次运行满足f(c)的Unicode代码点c时都将字符串s断开,并返回s的切片数组。您可以使用此功能按数字或特殊字符的每个点分割字符串 //22. ContainsRune //strings.ContainsRune(s string, r rune) bool: str是字符串,r是s符文,如果字符串中存在由符文指定的字符,则它将返回布尔值true,否则返回false //ContainsRune()Golang中的函数用于检查给定的字符串是否包含指定的符文 //Unicode是ASCII的超集,包含世界上书写系统中存在的所有字符,是目前正在遵循的字符集。Unicode系统中的每个字符都由Unicode代码点唯一标识,该代码点在Golang中称为符文 fmt.Println(strings.ContainsRune("geeksforgeeks",97)) //false //23 Split strings.Split(str string, split string) []string : 返回str split分隔的所有子串的slice news := "qwert" fmt.Println(strings.Split(news,"")) //[q w e r t] fmt.Println("news=",news) for k,v := range strings.Split(news,"") { fmt.Println(k,v) } a := "/../" fmt.Println(strings.Split(a,"/")) //24. Join strings.Join(s1 []string, sep string) string : 用sep把s1中的所有元素链接起来 ,并返回字符串 path := []string{"aa","bb","cc"} fmt.Println(strings.Join(path,"/")) //25. Cut func Cut(s, sep string) (before, after string, found bool) //将字符串 s 在第一个 sep 处切割为两部分,分别存在 before 和 after 中。如果 s 中没有 sep,返回 s,"",false // addr := "192.168.1.1:8080" // ip, port, ok := strings.Cut(addr, ":") // fmt.Println(ip) // fmt.Println(port) // fmt.Println(ok) }