您的位置 首页 golang

Golang 标准库:strings 包的应用


strings包

Go语言标准库中也存在这样一个名为strings包,额外封装一些方法用于处理字符串。

包含判断

  • 前后缀包含
func main() {    //前后缀包含    var str string = "This is a fat cat"    var str1 string = "Hello Boss!"    var str2 string = "Lucy is name My"    fmt.Printf("T/F? Does the string \"%s\" have prefix %s?\n", str, "is") //str的前缀是否包含"is"?    fmt.Printf("%t\n", strings.HasPrefix(str, "is"))                       //使用HasPrefix方法判断前缀    fmt.Printf("T/F Does the string \"%s\" have prefix %s?\n", str1, "He")    fmt.Printf("%t\n", strings.HasPrefix(str1, "He"))    fmt.Printf("T/F Does the string \"%s\" have prefix %s?\n", str2, "My") //str2的后缀是否包含"y"    fmt.Printf("%t\n,", strings.HasSuffix(str2, "My"))                     //使用HasSuffix方法判断后缀}
  • 子字符串包含关系

除了可以检查前后缀,还可以使用Contains方法判断一个字符串的中间是否包含指定子字符串。

func main() {    //使用ContainsAny方法查询字符串是否包含多个字符,    fmt.Println(strings.ContainsAny("team", "e"))     //true    fmt.Println(strings.ContainsAny("chain", ""))     //false    fmt.Println(strings.ContainsAny("name", "n & m")) //true    //使用Contains方法查找某个字符串是否存在这个字符串中,若存在,返回true    fmt.Println(strings.Contains("team", "t & a")) //false    fmt.Println(strings.Contains("chain", ""))     //true    fmt.Println(strings.Contains("name", "n & m")) //false}

与strings.Contains(str, chars)不同的是,strings.ContainsAny(str, chars)能够匹配更广泛的内容,它可以匹配Unicode字符串。

索引

strings包中的Index可以返回指定字符/串的第一个字符的索引值,如果不存在相应的字符串则返回-1

func main() {    str := "Hello, I'm Job, Yep"    str1 := "我是完满主任"    fmt.Printf("The position of \"Job\" is: ")    fmt.Printf("%d\n", strings.Index(str, "Job")) //使用Index方法返回str的第一个字符"Hello"的索引值8。    fmt.Printf("The position of the last instance of \"Hi\" is: ")    fmt.Printf("%d\n", strings.LastIndex(str, "Yep")) //使用LastIndex方法返回str的最后一个字符"Yep"出现的索引位置13。    fmt.Printf("The position of \"Tim\" is: ")    fmt.Printf("%d\n", strings.Index(str, "Tiger")) //不存在相应的字符串,返回-1    //适用于非ASCII编码的字符,使用strings.IndexRune()对字符进行定位    fmt.Printf("The position of \"满\" is: ")    fmt.Printf("%d\n", strings.IndexRune(str1, '满')) //一个中文占用3字节长度,第三个字符'满'的索引值是9。}

替换

在Go语言中,经常使用strings.Replace函数对字符串进行处理。

func main() {    str := "我是钓鱼城大学的老王!"                       //原字符串    new := "完满主任"                              //替换的新内容    old := "老王"                                //被替换的字符串    n := 1                                     //表示替换到第n个old    println(strings.Replace(str, old, new, n)) //使用Replace函数替换字符串}/*我是钓鱼城大学的完满主任!*/

strings.Replace(str, old, new, n)是函数一共有四个参数,str是原字符串,new是需要替换的内容,old是被替换的字符串,n表示匹配到第n个old。如果n等于-1,则表示匹配所有。

统计

  • 出现频率

在strings包中,可以借助strings.Count(str, manyO)统计字符串出现的频率。

func main() {       str := "Golang is cool, right?"    str1 := "科学建设钓鱼城特色的完满教育!"    var manyG string = "o"        //使用strings.Count()统计的字符串出现频率    fmt.Printf("%d\n", strings.Count(str, manyG))    fmt.Printf("%d\n", strings.Count(str, "oo"))    fmt.Printf("%d\n", strings.Count(str1, "完满教育"))}/* 311*/
  • 字符数量

统计字符串的字符数量可以用两种方法:第一种是使用len([]rune(str)),先把字符串通过[]rune转化,然后再调用len()统计字符串长度。第二种则是通过utf8包中的RuneCountInString函数统计。

func main() {    str := "一起玩嘛?主任"    fmt.Printf("%d\n", len([]rune(str)))     //使用len([]rune())方法    fmt.Println(utf8.RuneCountInString(str)) //使用RuneCountInString()方法}/*77*/

一般来说,Go语言官方更推荐第二种统计方式,但如果只是单纯统计,就没有必要引入utf8包,只需要使用第一种方式即可。以下是代码演示。

大小写转换

使用ToLower将字符串中的Unicode字符全部转换为相应的小写字符
使用ToUpper将字符串中的Unicode字符全部转换为相应的大写字符

func main() {    str := "Hello World!\n"    fmt.Printf("%s", str)    fmt.Printf(strings.ToLower(str)) //使用ToLower将字符串全部转换成小写    fmt.Printf(strings.ToUpper(str)) //使用ToUpper将字符串全部转换成大写}/*Hello World!hello world!HELLO WORLD!*/

修剪

使用strings.Trim()函数对字符串去掉一些不必要的内容,这一过程被称为修剪。

func main() {    str := "完满 Hello Go 完满"    str1 := "          请使用TrimSpace()修剪空白字符       "    fmt.Println(str)    fmt.Printf("%q\n", strings.Trim(str, "完满")) //修剪前缀和后缀    fmt.Printf("%q\n", strings.Trim(str, "完满 "))    fmt.Printf("%q\n", strings.TrimLeft(str, "完满 "))  //修剪左边前缀的字符    fmt.Printf("%q\n", strings.TrimRight(str, " 完满")) //修剪右边后缀的字符    fmt.Printf("%q\n", strings.TrimSpace(str1))       //修剪前缀和后缀的空白字符}/* 完满 Hello Go 完满 " Hello Go " "Hello Go" "Hello Go 完满" "完满 Hello Go" "请使用TrimSpace()修剪空白字符"*/

分割

使用分割函数strings.Split(),函数返回的是一个切片(slice)。切片的形式是用 [ ] 括起来,在后续的复合数据类型中将会进一步学习切片的使用。

func main() {    str := "This is Golang Project"    fmt.Println(str)    fmt.Printf("%q\n", strings.Split(str, "Project")) //分割指定字符    fmt.Printf("%q\n", strings.Split(str, " "))       //分割空白字符}/*This is Golang Project["This is Golang " ""]["This" "is" "Golang" "Project"]*/

插入字符

strings.Fields函数用于将字符串转换成slice(切片),strings.Join则将类型为string的切片使用分隔符组成拼接组成一个字符串。

func main() {    str := "What's your name 完满主任"    strFli := strings.Fields(str) //将原字符串转换成切片类型    fmt.Println(str)    fmt.Println(strFli)    for _, val := range strFli { //range关键字的用法,需补充....        fmt.Printf("%s", val)    }    fmt.Println()    str2 := strings.Join(strFli, ";") //用分号拼接字符串    fmt.Printf("%s\n", str2)}/*What's your name 完满主任[What's your name 完满主任]What'syourname完满主任What's;your;name;完满主任*/

文章来源:智云一二三科技

文章标题:Golang 标准库:strings 包的应用

文章地址:https://www.zhihuclub.com/3582.shtml

关于作者: 智云科技

热门文章

网站地图