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)


 
}

 

posted @ 2022-04-19 16:10  wushaoyu  阅读(301)  评论(0编辑  收藏  举报