字符串在开发中经常用到,包括用户的输入,数据库读取的数据等,我们经常需要对字符串 进行分割、连接、转换等操作,我们可以通过 Go 标准库中的 strings 和 strconv 两个包中的 函数进行相应的操作。 ## 字符串操作(8) > strings包下的函数 > | | 功能 | 返回 | 范例 | | —- | —- | —- | —- | | Contains | **<font style="color:rgb(0,0,128);">func </font>**<font style="color:rgb(0,0,0);">Contains(s, substr </font><font style="color:rgb(0,0,128);">string</font><font style="color:rgb(0,0,0);">) </font><font style="color:rgb(0,0,128);">bool</font>
功能:字符串 s 中是否包含 substr,返回 bool 值

注意返回的是bool | bool | 字符串处理 - 图1 | | Join | **<font style="color:rgb(0,0,128);">func </font>**<font style="color:rgb(0,0,0);">Join(a []</font><font style="color:rgb(0,0,128);">string</font><font style="color:rgb(0,0,0);">, sep </font><font style="color:rgb(0,0,128);">string</font><font style="color:rgb(0,0,0);">) </font><font style="color:rgb(0,0,128);">string</font>
功能:字符串链接,把 slice a 通过 sep 链接起来
| string | 字符串处理 - 图2
这个连接不是简单拼接,是sep作为绳子,把slice a的每一艘船,连接起来 | | Index | **<font style="color:rgb(0,0,128);">func </font>**<font style="color:rgb(0,0,0);">Index(s, sep </font><font style="color:rgb(0,0,128);">string</font><font style="color:rgb(0,0,0);">) </font><font style="color:rgb(0,0,128);">int</font>
功能:在字符串 s 中查找 sep 所在的位置,返回位置值,找不到返回-1 | int | 字符串处理 - 图3
下标从0开始 | | Repeat | **<font style="color:rgb(0,0,128);">func </font>**<font style="color:rgb(0,0,0);">Repeat(s </font><font style="color:rgb(0,0,128);">string</font><font style="color:rgb(0,0,0);">, count </font><font style="color:rgb(0,0,128);">int</font><font style="color:rgb(0,0,0);">) </font><font style="color:rgb(0,0,128);">string</font>
功能:重复 s 字符串 count 次,最后返回重复的字符串 | string | 字符串处理 - 图4 | | Reaplace | **<font style="color:rgb(0,0,128);">func </font>**<font style="color:rgb(0,0,0);">Replace(s, old, </font><font style="color:rgb(0,0,128);">new string</font><font style="color:rgb(0,0,0);">, n </font><font style="color:rgb(0,0,128);">int</font><font style="color:rgb(0,0,0);">) </font><font style="color:rgb(0,0,128);">string</font>
功能:在 s 字符串中,把 old 字符串替换为 new 字符串,n 表示替换的次数,小于 0 表示全部替换 | string | 字符串处理 - 图5 | | Split
(分割) | **<font style="color:rgb(0,0,128);">func </font>**<font style="color:rgb(0,0,0);">Split(s, sep </font><font style="color:rgb(0,0,128);">string</font><font style="color:rgb(0,0,0);">) []</font><font style="color:rgb(0,0,128);">string</font>
功能:把 s 字符串按照 sep 分割,返回 slice | []string | 字符串处理 - 图6
字符串处理 - 图7
说明:
1. %q来打印的,%q 打印双引号???
2. sep若是"",则依次一个一个字符进行分割
3. sep若是不存在于s 中,则不进行处理输出s | | Trim
(削减) | **<font style="color:rgb(0,0,128);">func </font>**<font style="color:rgb(0,0,0);">Trim(s </font><font style="color:rgb(0,0,128);">string</font><font style="color:rgb(0,0,0);">, cutset </font><font style="color:rgb(0,0,128);">string</font><font style="color:rgb(0,0,0);">) </font><font style="color:rgb(0,0,128);">string</font>
功能:在 s 字符串的头部和尾部去除 cutset 指定的字符串
| string | 字符串处理 - 图8
就像吃鱼,去掉头部和尾巴,而且是批量处理 | | Field (字段) | **<font style="color:rgb(0,0,128);">func </font>**<font style="color:rgb(0,0,0);">Fields(s </font><font style="color:rgb(0,0,128);">string</font><font style="color:rgb(0,0,0);">) []</font><font style="color:rgb(0,0,128);">string</font>
功能:去除 s 字符串的空格符,并且按照空格分割返回 slice

好像是把一句英文话的所有英文单词提取出来

| []string | 字符串处理 - 图9

和replace有点像,但是replace可自主定义替换,返回的是完整字符串,而Filed去点空字符,返回的是切片 | ## 字符串转换 > strconv 包 > ### append系列函数 > 为string诞生的304胶水 > 这是append系列函数,和切片扩容的append函数不一样!Append 系列函数将整数等转换为字符串后,添加到现有的字节数组中。
  1. package main
  2. import (
  3. "fmt"
  4. "strconv"
  5. )
  6. func main() {
  7. str := make([]byte, 0, 100)
  8. str = strconv.AppendInt(str, 4567, 10) //以 10 进制方式追加
  9. str = strconv.AppendBool(str, false)
  10. str = strconv.AppendQuote(str, "abcdefg") //就加字符串,quote是引用的意思
  11. str = strconv.AppendQuoteRune(str, '单') //加含有非英文的字符串,看到rune没?!
  12. fmt.Println(string(str)) //一定要加string,至于为什么能这么转我也不知道
  13. fmt.Println(str) //没有string结果大大滴不同
  14. }

字符串处理 - 图10

Format系列函数

让这个世界只有string吧格拉啦啦啦啦!

Format 系列函数把其他类型的转换为字符串。
  1. a := strconv.FormatBool(false)
  2. b := strconv.FormatInt(1234, 10) //整数转化为字符串,以10进制
  3. c := strconv.FormatUint(12345, 10) //???
  4. d := strconv.Itoa(1023) //整数转化为字符串,常用
  5. //把浮点数3.14,按浮点型,以最少量但必须的精度,转化成字符串,其中3.14其来源类型是float32
  6. e := strconv.FormatFloat(3.14, 'f', -1, 32)
  7. fmt.Println(a, b, c, de)

结果:字符串处理 - 图11

解释:

关于:FormatFloat

fmt的'-ddd.ddd'表示浮点型

字符串处理 - 图12

Parse系列函数

消灭这世上的字符串

parse英文是 v. 仔细研究,分析的 & n. (计算机)句法分析,句法分析结果

Parse 系列函数把字符串转换为其他类型,最需要注意的是有两个返回值
  1. package main
  2. import (
  3. "fmt"
  4. "strconv"
  5. )
  6. func checkError(e error) {
  7. if e != nil {
  8. fmt.Println(e)
  9. }
  10. }
  11. func main() {
  12. a, err := strconv.ParseBool("false")
  13. checkError(err)
  14. b, err := strconv.ParseFloat("123.23", 64)
  15. checkError(err)
  16. c, err := strconv.ParseInt("1234", 10, 64)
  17. checkError(err)
  18. d, err := strconv.ParseUint("12345", 10, 64)
  19. checkError(err)
  20. e, err := strconv.Atoi("1023") //最常用!!!意思是把字符串转化为整型
  21. checkError(err)
  22. fmt.Println(a, b, c, d, e) //false 123.23 1234 12345 1023
  23. }

对于error的检查,还可以

字符串处理 - 图13