本教材由知了传课辛苦制作而成,仅供学习使用,请勿用于商业用途!如进行转载请务必注明出处!谢谢!

字符串处理

一、 字符串处理函数

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

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

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

1. Contains

func Contains(s, substr string) bool

功能:字符串s中是否包含substr,返回bool值。演示如下:

//查找一个字符串在另一个字符串中是否出现 str1 := "hello world" str2 := "g" //Contains(被查找的字符串,查找的字符串) 返回值 bool //一般用于模糊查找 b := strings.Contains(str1,str2) //fmt.Println(b) if b { fmt.Println("找到了") }else { fmt.Println("没有找到") }

在使用Contains关键字的时候,判断b的结果,如果在str1中有str2的字那么就返回true,在判断的时候不写true默认就是等于true

2. Join

func Join(a []string, sep string) string

功能:字符串链接,把slice通过sep链接起来

演示如下:

//字符串切片 slice := []string{"123","456","789"} //fmt.Println(slice) //Join //字符串的连接 str := strings.Join(slice,"") fmt.Println(str) //fmt.Printf("%T\n",str)

结果如下:

123456789

通过join关键字把,slice里面的值通过strings.Join(slice,"")也就是去除""给从新赋值给了str最后打印出来的值就变成了123456789

3. Index

func Index(s, substr string) int

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

str1 := "hello world" str2 := "e" //查找一个字符串在另一个字符串中第一次出现的位置 返回值 int 下标 -1 找不到 i := strings.Index(str1,str2) fmt.Println(i)

结果为1。
i := strings.Index(str1,str2)通过index关键字,在str1中查找str2的值,然后赋值给ie这个值在hello woeld中能找到所以就会返回它的下标值,下标值是从0开始的,h0e就是1,所以结果为1。如果查找的是一个g的话找不到就会返回一个-1

4. Repeat

func Repeat(s string, count int) string

功能:重复s字符串count次,最后返回重复的字符串。

演示如下:

str := "性感网友,在线取名。" //将一个字符串重复n次 str1 := strings.Repeat(str,100) fmt.Println(str1)

str1 := strings.Repeat(str,100)通过repeat关键字重复了str100遍,就和循环遍历str100次是一样的。

5. Replace

func Replace(s, old, new string, n int) string

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

str := "性感网友在线取名性感性感性感性感性感" //字符串替换 屏蔽敏感词汇 //如果替换次数小于0 表示全部替换 str1 := strings.Replace(str,"性感","**",-1) fmt.Println(str1)

结果如下:

**网友在线取名**********

str1 := strings.Replace(str,"性感","**",-1)通过关键字replacestr中的性感替换为了******然后给了个-1也就是全部替换,当然你给其他的负数也是一样的,只要是小于0就全部替换,如果说是1的话就是替换一次,输出结果就会是:**网友在线取名性感性感性感性感性感

6. Split

func Split(s, sep string) []string

功能:把s字符串按照sep分割,返回slice

//将一个字符串按照标志位进行切割变成切片 str1 := "123456789@qq.com" slice := strings.Split(str1,"@") fmt.Println(slice[0])

结果如下:

123456789

slice := strings.Split(str1,"@")通过split关键字对str1进行了分割,把@后面的给丢弃了,留下了@前面的。

7. Trim

func Trim(s string, cutset string) string

功能:在s字符串的头部和尾部去除cutset指定的字符串。

str := "====a===u=ok====" //去掉字符串头尾的内容 str1:= strings.Trim(str,"=") fmt.Println(str1)

结果如下:

a===u=ok

str1:= strings.Trim(str,"=")通过Trim关键字对str中的=号做了去除头尾的处理,只要是str前面有=,或者后面有=都会去除。

8. Fields

func Fields(s string) []string

功能:去除s字符串的空格符,并且按照空格分割返回slice

str := " are you ok " //去除字符串中空格 转成切片 一般用于统计单词个数 slice := strings.Fields(str) fmt.Println(slice)

slice := strings.Fields(str)通过Fields关键字对str中的值进行了空格去除。

二、字符串转换

通过以上的讲解,发现字符串的处理是非常重要的,GO语言也提供了字符串与其它类型之间相互转换的函数。相应的字符串转换函数都在“strconv”包。

1. Format系列函数:

Format系列函数把其他类型的转换为字符串。

//将其他类型转成字符串 Format b := false str := strconv.FormatBool(true) fmt.Println(str) fmt.Printf("%T\n",str) str := strconv.FormatInt(120,10) //计算机中进制 可以表示2-36 2 8 10 16 fmt.Println(str) // 'f'打印方式 以小数方式 4 指小数位数 64 以float64处理 str:= strconv.FormatFloat(3.14159,'f',4,64) fmt.Println(str) str := strconv.Itoa(123) fmt.Println(str)

以上代码只要是通过Format关键字就能全部转换为字符串类型输出。

2. Parse

Parse系列函数把字符串转换为其他类型:

//字符串转成其他类型 Parse b,err := strconv.ParseBool("true") if err!=nil { fmt.Println("类型转换出错") }else { fmt.Println(b) fmt.Printf("%T\n",b) } v,err := strconv.ParseInt("abc",16,64) fmt.Println(v,err) v,_ := strconv.ParseFloat("3.14159",64) fmt.Println(v) v,_:=strconv.Atoi("123") fmt.Println(v)

3. Append

Append系列函数将整数等转换为字符串后,添加到现有的字节数组中。

slice := make([]byte,0,1024) //将其他类型转成字符串 添加到字符切片里 slice = strconv.AppendBool(slice,false) slice = strconv.AppendInt(slice,123,2) slice = strconv.AppendFloat(slice,3.14159,'f',4,64) slice = strconv.AppendQuote(slice,"hello") fmt.Println(string(slice))

对应的结果是:

false11110113.1416"hello"

通过Append关键字把其他类型的值转换成字符串后在拼接到一起,赋值给slice,当然赋值给谁你可以自己起名字,所以最后的打印结果是上面这样的。

2196人已阅读,今天你学习了吗?

添加新回复