2021-07-07 13:37:39 +08:00
|
|
|
|
# Golang 字符串操作
|
2020-10-13 13:58:09 +08:00
|
|
|
|
|
2022-12-08 00:58:00 +08:00
|
|
|
|
- [Golang 字符串操作](#golang-字符串操作)
|
|
|
|
|
- [1. 分割/拼接操作](#1-分割拼接操作)
|
|
|
|
|
- [2. 字符串和其他类型转换](#2-字符串和其他类型转换)
|
|
|
|
|
- [3. 字符串查找](#3-字符串查找)
|
|
|
|
|
- [4. 剔除字符](#4-剔除字符)
|
|
|
|
|
- [5. 字符串长度](#5-字符串长度)
|
|
|
|
|
|
|
|
|
|
## 1. 分割/拼接操作
|
2020-10-13 13:58:09 +08:00
|
|
|
|
|
|
|
|
|
```go
|
|
|
|
|
// 1. 以 "," 对字符串分割
|
|
|
|
|
s:="A,B,C"
|
|
|
|
|
parts:=strings.Split(s,",")
|
|
|
|
|
fmt.Println(parts)
|
|
|
|
|
|
|
|
|
|
// 2. 把字符串连接起来
|
|
|
|
|
s=strings.Join(parts,"-")
|
|
|
|
|
fmt.Println(s)
|
|
|
|
|
```
|
|
|
|
|
|
2022-12-08 00:58:00 +08:00
|
|
|
|
## 2. 字符串和其他类型转换
|
2020-10-13 13:58:09 +08:00
|
|
|
|
|
|
|
|
|
```go
|
2022-09-02 11:33:23 +08:00
|
|
|
|
// 整形转字符串
|
2020-10-13 13:58:09 +08:00
|
|
|
|
s=strconv.Itoa(10)
|
|
|
|
|
// 字符串转整形
|
|
|
|
|
fmt.Println(strconv.Atoi(s))
|
2022-09-02 11:33:23 +08:00
|
|
|
|
/**
|
|
|
|
|
* 浮点型转字符串
|
|
|
|
|
* func FormatFloat(f float64, fmt byte, prec, bitSize int) string
|
|
|
|
|
* f:float64类型的浮点数
|
|
|
|
|
* fmt: 转为字符串后,字符串的类型:
|
|
|
|
|
* ‘b’ (-ddddp±ddd):二进制指数
|
|
|
|
|
* ‘e’ (-d.dddde±dd):10进制指数
|
|
|
|
|
* ‘E’ (-d.ddddE±dd):10进制指数
|
|
|
|
|
* ‘f’ (-ddd.dddd):无指数
|
|
|
|
|
* ‘g’ :指数很大时使用’e',其他使用 ‘f’
|
|
|
|
|
* ‘G’ :指数很大时使用 ‘E’,其他使用’f'
|
|
|
|
|
* ‘x’ (-0xd.ddddp±ddd):十六进制分数和二进制指数
|
|
|
|
|
* ‘X’ (-0Xd.ddddP±ddd):十六进制分数和二进制指数
|
|
|
|
|
* prec:控制经度
|
|
|
|
|
* 如果格式标记为 ‘e’、‘E’、‘f’、‘x’、‘X’,则 prec 表示小数点后的数字位数
|
|
|
|
|
* 如果格式标记为 ‘g’,‘G’,则 prec 表示总的数字位数(整数部分+小数部分)
|
|
|
|
|
* bitSize:表示f最初的类型。(虽然入参f是float64,有可能是float32转过来的)
|
|
|
|
|
*/
|
|
|
|
|
s=strconv.FormatFloat(x, 'f', 2, 64)
|
2020-10-13 13:58:09 +08:00
|
|
|
|
```
|
2020-11-13 18:15:19 +08:00
|
|
|
|
|
|
|
|
|
## 3. 字符串查找
|
|
|
|
|
|
|
|
|
|
```go
|
2021-12-31 23:53:43 +08:00
|
|
|
|
strings.Contains("widuu", "id") // 查找某个字符是否在这个字符串中存在, return true
|
|
|
|
|
strings.Contains("id", "widuu") // 查找某个字符是否在这个字符串中存在, return false
|
|
|
|
|
strings.Contains("widuu", "i&d") // 查找某个字符是否在这个字符串中存在, return false
|
|
|
|
|
strings.ContainsAny("widuu", "i&d") // 查询字符串中是否包含多个字符, return true
|
2021-08-24 20:32:05 +08:00
|
|
|
|
strings.Count("widuu", "uu") // 在一段字符串中有多少匹配到的字符, return 1
|
|
|
|
|
strings.Count("widuu", "u") // 在一段字符串中有多少匹配到的字符, return 2
|
|
|
|
|
strings.Index("widuu", "i") // 查找字符串, 然后返回当前的位置, return 1
|
|
|
|
|
strings.Index("widuu", "u") // 查找字符串, 然后返回当前的位置, return 3
|
|
|
|
|
strings.LastIndex("widuu", "u") // 查找字符串, 然后返回最后出现的位置, return 4
|
|
|
|
|
strings.IndexAny("hello world hello world", "wo") // 查找字符串, 然后返回当前的位置, return 4
|
|
|
|
|
strings.LastIndexAny("hello world hello world", "wo") // 查找字符串, 然后返回最后出现的位置, return 19
|
2020-11-13 18:15:19 +08:00
|
|
|
|
```
|
2021-01-18 11:58:39 +08:00
|
|
|
|
|
2021-12-31 23:53:43 +08:00
|
|
|
|
## 4. 剔除字符
|
|
|
|
|
|
|
|
|
|
```go
|
|
|
|
|
strings.TrimSpace(" He llo ") // 剔除前后空格,return "He llo"
|
|
|
|
|
strings.Trim("+He+llo++", "+") // 剔除前后指定字符,return "He+llo"
|
|
|
|
|
strings.TrimLeft("+-+-He+-llo+-+-", "+-") // 剔除左侧任意匹配字符,return "He+-llo+-+-"
|
|
|
|
|
strings.TrimRight("+-+-He+-llo+-+-", "+-") // 剔除右侧任意匹配字符,return "+-+-He+-llo"
|
|
|
|
|
strings.TrimPrefix("+-+-He+-llo+-+-", "+-") // 仅剔除一组完全匹配的前导符,return "+-He+-llo+-+-"
|
|
|
|
|
strings.TrimSuffix("+-+-He+-llo+-+-", "+") // 仅剔除一组完全匹配的后导符,return "+-+-He+-llo+-"
|
|
|
|
|
```
|
|
|
|
|
|
2022-12-08 00:58:00 +08:00
|
|
|
|
## 5. 字符串长度
|
2021-01-18 11:58:39 +08:00
|
|
|
|
|
|
|
|
|
```go
|
|
|
|
|
fmt.Println(len("Hello"))
|
|
|
|
|
```
|