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 等方法需要处理可能的转换错误。

相关推荐
Eiceblue1 小时前
【免费.NET方案】CSV到PDF与DataTable的快速转换
开发语言·pdf·c#·.net
tan180°2 小时前
MySQL表的操作(3)
linux·数据库·c++·vscode·后端·mysql
m0_555762902 小时前
Matlab 频谱分析 (Spectral Analysis)
开发语言·matlab
浪裡遊3 小时前
React Hooks全面解析:从基础到高级的实用指南
开发语言·前端·javascript·react.js·node.js·ecmascript·php
优创学社23 小时前
基于springboot的社区生鲜团购系统
java·spring boot·后端
why技术3 小时前
Stack Overflow,轰然倒下!
前端·人工智能·后端
幽络源小助理3 小时前
SpringBoot基于Mysql的商业辅助决策系统设计与实现
java·vue.js·spring boot·后端·mysql·spring
lzb_kkk3 小时前
【C++】C++四种类型转换操作符详解
开发语言·c++·windows·1024程序员节
好开心啊没烦恼4 小时前
Python 数据分析:numpy,说人话,说说数组维度。听故事学知识点怎么这么容易?
开发语言·人工智能·python·数据挖掘·数据分析·numpy
ai小鬼头4 小时前
AIStarter如何助力用户与创作者?Stable Diffusion一键管理教程!
后端·架构·github