11.Go复合类型-字符串

网友投稿 640 2022-11-22

11.Go复合类型-字符串

11.Go复合类型-字符串

11.Go复合类型-字符串

前言

上一章节,我们已经学习了切片,本章节来看看 字符串。

3:字符串

我们从文件中将数据读取出来以后,很多情况下并不是直接将数据打印出来,而是要做相应的处理。例如:去掉空格等一些特殊的符号,对一些内容进行替换等。

这里就涉及到对一些字符串的处理。在对字符串进行处理时,需要借助于包“strings”

下面讲解一下常用的字符串处理函数:

Contains

func Contains(s,substr string)bool功能:字符串s中是否包含substr,返回bool值

演示如下:

var str string = "hellogo"fmt.Println(strings.Contains(str, "go")) // 返回值truefmt.Println(strings.Contains(str, "abc")) // 返回值false

Join

func Join(a[]string,sep string)string功能:字符串链接,把slicea通过sep链接起来

演示如下:

s := []string{"abc", "hello", "mike", "go"}buf := strings.Join(s, "|")fmt.Println("buf = ", buf)

结果如下:

buf = abc|hello|mike|go

Index

func Index(s,sep string)int功能:在字符串s中查找sep所在的位置,返回位置值,找不到返回-1

示例:

fmt.Println(strings.Index("abcdhello", "hello")) // 返回位置4fmt.Println(strings.Index("abcdhello", "go")) // 不包含子串,返回-1

结果如下:

4-1

Repeat

func Repeat(s string,count int)string功能:重复s字符串count次,最后返回重复的字符串

演示如下:

buf := strings.Repeat("go", 3)fmt.Println("buf = ", buf) //"gogogo"

Replace

func Replace(s,old,new string,n int)string功能:在s字符串中,把old字符串替换为new字符串,n表示替换的次数,小于0表示全部替换

示例:

fmt.Println(strings.Replace("oink oink oink", "k", "ky", 2)) // oinky oinky oinkfmt.Println(strings.Replace("oink oink oink", "oink", "moo", -1)) // moo moo moo

结果如下:

oinky oinky oinkmoo moo moo

Split

func Split(s,sep string)[]string功能:把s字符串按照sep分割,返回slice

示例:

buf := "hello@abc@go@mike"s2 := strings.Split(buf, "@")fmt.Println("s2 = ", s2)

结果如下:

s2 = [hello abc go mike]

Trim

func Trim(s string,cutset string)string功能:在s字符串的头部和尾部去除cutset指定的字符串

示例:

buf := strings.Trim(" are u ok ? ", " ") //去掉开头、结尾的空格fmt.Printf("buf = #%s# \n", buf)

结果如下:

buf = #are u ok ?#

Fields

func Fields(s string) []string功能:去除s字符串的空格符,并且按照空格分割返回slice

示例:

s3 := strings.Fields(" are u ok ? ")for i,data := range s3{ fmt.Println(i, ", ", data)}

结果如下:

0 , are1 , u2 , ok3 , ?

练习题

练习1:从日期字符串("2008-08-08")中分析出年、月、日;2008年08月08日。

让用户输入一个日期格式如:2008-01-02,你输出你输入的日期为2008年1月2日

var str stringfmt.Println("请输入出生日期,格式为:年-月-日")fmt.Scan(&str)s := strings.Split(str, "-") // 基于 - 分割字符串,拆分年月日fmt.Println(s[0] + "年" + s[1] + "月" + s[2] + "日")

执行如下:

请输入出生日期,格式为:年-月-日2021-05-172021年05月17日

练习2:从Email中提取出用户名和域名:abc@163.com

var email string = "abc@163.com"s := strings.Split(email, "@") // 基于 @ 分割字符串fmt.Println("用户名:" + s[0] + ", 域名:" + s[1])

执行如下:

用户名:abc, 域名:163.com

练习3:让用户输入一句话,判断这句话中有没有邪恶,如果有邪恶就替换成这种形式 然后输出,如:老王很邪恶,输出后变成老王很**

var str stringfmt.Println("请输入一句话:")fmt.Scan(&str)if strings.Contains(str, "邪恶") { str = strings.Replace(str, "邪恶", "**", -1)}fmt.Println(str)

执行如下:

请输入一句话:老王很邪恶老王很**

练习4:把{“诸葛亮”,”鸟叔”,”卡卡西”,”卡哇伊”} 变成  诸葛亮|鸟叔|卡卡西|卡哇伊,然后再把|切割掉

s := []string{"诸葛亮", "鸟叔", "卡卡西", "卡哇伊"}buf := strings.Join(s, "|")fmt.Println("buf = ", buf)buf2 := strings.Split(buf, "|")fmt.Println(buf2)

执行如下:

buf = 诸葛亮|鸟叔|卡卡西|卡哇伊[诸葛亮 鸟叔 卡卡西 卡哇伊]

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:从创业公司到大厂,我是如何积累和转变的
下一篇:20.Go面向对象-方法重写
相关文章

 发表评论

暂时没有评论,来抢沙发吧~