操作系统寒武纪 - 会让企业IT高兴吗?
640
2022-11-22
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小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~