NotePublic/Software/Development/Language/Go/Basic/Golang_字符串操作.md

83 lines
3.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Golang 字符串操作
- [Golang 字符串操作](#golang-字符串操作)
- [1. 分割/拼接操作](#1-分割拼接操作)
- [2. 字符串和其他类型转换](#2-字符串和其他类型转换)
- [3. 字符串查找](#3-字符串查找)
- [4. 剔除字符](#4-剔除字符)
- [5. 字符串长度](#5-字符串长度)
## 1. 分割/拼接操作
```go
// 1. 以 "," 对字符串分割
s:="A,B,C"
parts:=strings.Split(s,",")
fmt.Println(parts)
// 2. 把字符串连接起来
s=strings.Join(parts,"-")
fmt.Println(s)
```
## 2. 字符串和其他类型转换
```go
// 整形转字符串
s=strconv.Itoa(10)
// 字符串转整形
fmt.Println(strconv.Atoi(s))
/**
* 浮点型转字符串
* func FormatFloat(f float64, fmt byte, prec, bitSize int) string
* ffloat64类型的浮点数
* 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控制经度
* 如果格式标记为 eEfxX则 prec 表示小数点后的数字位数
* 如果格式标记为 gG则 prec 表示总的数字位数(整数部分+小数部分)
* bitSize表示f最初的类型。虽然入参f是float64有可能是float32转过来的
*/
s=strconv.FormatFloat(x, 'f', 2, 64)
```
## 3. 字符串查找
```go
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
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
```
## 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+-"
```
## 5. 字符串长度
```go
fmt.Println(len("Hello"))
```