Go 语言标准库中strings和strconv详细功能介绍与示例

以下是 Go 语言标准库中 stringsstrconv 包的常用方法说明及示例:


一、strings 包(字符串操作)

1. Contains

判断字符串是否包含子串

go 复制代码
fmt.Println(strings.Contains("hello world", "ell")) // true
2. Count

统计子串出现次数

go 复制代码
fmt.Println(strings.Count("cheese", "e")) // 3
3. Join

字符串拼接

go 复制代码
s := []string{"a", "b", "c"}
fmt.Println(strings.Join(s, "-")) // a-b-c
4. Split

字符串分割

go 复制代码
fmt.Println(strings.Split("a,b,c", ",")) // [a b c]
5. Replace

字符串替换

go 复制代码
fmt.Println(strings.Replace("oink oink oink", "k", "ky", 2)) 
// oinky oinky oink
6. Trim

去除首尾指定字符

go 复制代码
fmt.Println(strings.Trim("¡¡Hello!¡", "!¡")) // Hello
7. ToUpper/ToLower

大小写转换

go 复制代码
fmt.Println(strings.ToUpper("Test")) // TEST
fmt.Println(strings.ToLower("TEST")) // test
8. Index

查找子串位置

go 复制代码
fmt.Println(strings.Index("chicken", "ken")) // 4
9. HasPrefix/HasSuffix

前缀/后缀判断

go 复制代码
fmt.Println(strings.HasPrefix("Gopher", "Go")) // true
fmt.Println(strings.HasSuffix("Amigo", "go"))  // true
10. Fields

按空白分割字符串

go 复制代码
fmt.Println(strings.Fields("  foo bar  baz   ")) 
// [foo bar baz]

二、strconv 包(字符串转换)

1. Atoi

字符串转整型

go 复制代码
i, _ := strconv.Atoi("42")
fmt.Println(i) // 42

_, err := strconv.Atoi("abc")
fmt.Println(err) // strconv.Atoi: parsing "abc": invalid syntax
2. Itoa

整型转字符串

go 复制代码
s := strconv.Itoa(42)
fmt.Println(s) // "42"
3. ParseBool

字符串转布尔值

go 复制代码
b, _ := strconv.ParseBool("true")
fmt.Println(b) // true
4. ParseFloat

字符串转浮点数

go 复制代码
f, _ := strconv.ParseFloat("3.1415", 64)
fmt.Println(f) // 3.1415
5. FormatFloat

浮点数转字符串

go 复制代码
s := strconv.FormatFloat(3.1415, 'f', 2, 64)
fmt.Println(s) // "3.14"
6. ParseInt

指定进制字符串转整型

go 复制代码
i, _ := strconv.ParseInt("1010", 2, 64)
fmt.Println(i) // 10 (二进制1010转十进制)
7. FormatInt

整型转指定进制字符串

go 复制代码
s := strconv.FormatInt(255, 16)
fmt.Println(s) // "ff"
8. Quote

添加双引号(含特殊字符转义)

go 复制代码
fmt.Println(strconv.Quote(`"Hello \n World"`))
// "\"Hello \\n World\""
9. Append系列

高效拼接字符串

go 复制代码
buf := []byte("int: ")
buf = strconv.AppendInt(buf, 123, 10)
fmt.Println(string(buf)) // int: 123
10. IsPrint

判断是否可打印字符

go 复制代码
fmt.Println(strconv.IsPrint('\u0000')) // false
fmt.Println(strconv.IsPrint('a'))       // true

三、典型使用场景示例

1. 字符串处理综合示例
go 复制代码
input := "  Hello, 世界!  "
processed := strings.TrimSpace(input)
parts := strings.Split(processed, " ")
fmt.Println(strings.Join(parts, "-")) 
// Hello,-世界!
2. 数字转换综合示例
go 复制代码
// 读取环境变量转为整型
env := "PORT"
val := os.Getenv(env)
port, err := strconv.Atoi(val)
if err != nil {
    log.Fatalf("Invalid %s: %v", env, err)
}
fmt.Printf("Server starting on port %d", port)
3. 高效字符串拼接
go 复制代码
var buf []byte
buf = strconv.AppendBool(buf, true)
buf = append(buf, ' ')
buf = strconv.AppendInt(buf, 2023, 10)
fmt.Println(string(buf)) // true 2023

四、重要特性对比表

功能 strings 包 strconv 包
字符串包含判断 Contains/ContainsAny -
类型转换 - Atoi/Itoa/ParseBool 等
字符编码处理 ToUpper/ToLower/ToTitle Quote/Unquote
数字格式化 - FormatInt/FormatFloat
高效拼接 Join AppendXXX 系列
空白处理 TrimSpace/Fields -
进制转换 - ParseInt/FormatInt

这些方法覆盖了字符串操作和类型转换的常见需求,建议结合官方文档使用(可通过 go doc strconv.ParseInt 等方式查看详细说明)。实际开发中需要注意错误处理,特别是 AtoiParseBool 等方法需要处理可能的转换错误。

相关推荐
苏三说技术35 分钟前
Claude Code从失控到起飞,只用了这些技巧
后端
长栎1 小时前
写 for 循环写了十年,你却从没用过迭代器模式最狠的那一面
后端
LiaCode2 小时前
Redis 在生产项目的使用
前端·后端
用户559822481222 小时前
Docker Compose Down 导致容器数据误删——ext4 日志恢复全记录
后端
LiaCode2 小时前
一天学完 redis 的爽翻版核心知识总结
前端·后端
大刚测试开发实战2 小时前
如何内网穿透访问本地私有化部署的TestHub
前端·后端·github
xiaodaoluanzha2 小时前
迄今為止,最簡單的編程語言 Nolang
前端·后端
Csvn2 小时前
Docker 容器管理入门 — 从镜像到容器编排
后端
用户762352425912 小时前
ShardingJDBC
后端
行者全栈架构师2 小时前
IDEA 中 Maven 项目的 15 个红色报错快速解决方法
java·后端