Go语言strings包常用操作示例与说明

Hazel
Hazel
发布时间:2026-10-16| 4人浏览过
原创

本文详解Go标准库strings包的常用操作方法,涵盖包含判断、统计、比较、分割、定位、拼接、大小写转换及去空格等功能,提供直接可用的代码示例。

在Go语言开发中,字符串是不可变的字节序列,对字符串进行各种处理是基础且高频的需求。标准库中的 strings 包提供了丰富的内置方法,使得字符串操作变得简洁高效。以下是对该包中常用函数的分类解析。

包含关系判断

第1步:使用 Contains 检查子串存在性

strings.Contains(s, substr string) bool 用于判断字符串 s 是否包含指定的子串 substr。返回值布尔值表示包含(true)或不包含(false)。需要注意的是,空子串会被视为在任何字符串中存在。

str := "hello world"
fmt.Println(strings.Contains(str, "hello")) // true
fmt.Println(strings.Contains(str, "我"))   // false
fmt.Println(strings.Contains("", ""))      // true,空子串始终匹配

第2步:使用 ContainsAny 检查字符组

strings.ContainsAny(s, chars string) bool 判断字符串 s 中是否存在 chars 中的**任何一个字符**。它与 Contains 的区别在于后者匹配完整子串,前者只需匹配单个字符即可。

str := "hello world"
fmt.Println(strings.ContainsAny(str, "w"))    // true,包含w
fmt.Println(strings.ContainsAny(str, "def"))  // true,包含d, e, f任一
fmt.Println(strings.ContainsAny(str, ""))     // false,空字符集不包含任何内容

统计功能

第3步:使用 Count 统计子串出现次数

strings.Count(s, substr string) int 计算非重叠子串 substr 在 s 中出现的次数。如果传入空字符串 "",它会返回字符串长度加1(因为每个字节前后都算一个间隙)。

str := "hello world"
fmt.Println(strings.Count(str, "l"))  // 3,'l'出现了三次
fmt.Println(strings.Count(str, " ")) // 1,一个空格
fmt.Println(strings.Count(str, ""))  // 12,长度为11的字符串+1

比较操作

第4步:使用 EqualFold 忽略大小写比较

strings.EqualFold(s, t string) bool 执行不区分大小写的比较。对于ASCII字符简单转换即可,对于非ASCII字符(如中文或其他语言),它会根据Unicode规则进行映射比较。

str := "Hello World"
fmt.Println(strings.EqualFold(str, "HELLO WORLD")) // true
fmt.Println(strings.EqualFold(str, "Hello"))       // false

第5步:使用 HasPrefix / HasSuffix 判断首尾

strings.HasPrefix(s, prefix string) bool 和 strings.HasSuffix(s, suffix string) bool 分别判断字符串是否以指定的前缀或后缀结尾。这是路径匹配或协议检测的常用手段。

str := "https://example.com/index.html"
fmt.Println(strings.HasPrefix(str, "http"))     // true
fmt.Println(strings.HasSuffix(str, ".html"))    // true
fmt.Println(strings.HasSuffix(str, ".txt"))     // false

分割与定位

第6步:使用 Fields 智能拆分字符串

strings.Fields(s string) []string 将字符串按任意空白字符(空格、制表符、换行等)作为分隔符拆分成片段,并自动去除连续的空格。这比用固定字符分割更适合处理自然文本。

str := "  hello   world  go  language  "
parts := strings.Fields(str)
fmt.Println(parts) // [hello world go language]

第7步:使用 Index / LastIndex 查找位置

strings.Index(s, sep string) int 返回子串 sep 第一次出现的索引位置,找不到返回 -1。strings.LastIndex 则查找最后一次出现的位置。若搜索空字符串 "",Index 返回 0,而 LastIndex 返回字符串长度。

str := "go go go"
fmt.Println(strings.Index(str, "go"))     // 0
fmt.Println(strings.LastIndex(str, "go")) // 6

拼接与重复

第8步:使用 Join 连接切片

strings.Join(a []string, sep string) string 将字符串数组用指定的分隔符 sep 连接成一个长字符串。这是构建URL或CSV数据时最高效的方法。

arr := []string{"a", "b", "c"}
fmt.Println(strings.Join(arr, "-")) // a-b-c
fmt.Println(strings.Join(arr, "/")) // a/b/c

第9步:使用 Repeat 生成重复字符串

strings.Repeat(s string, count int) string 将字符串 s 重复 count 次。常用于生成格式化的占位符或边框线。

fmt.Println(strings.Repeat("*", 5)) // *****

大小写与修剪

第10步:统一大写与小写

strings.ToUpper(s string) string 和 strings.ToLower(s string) string 分别将字符串转为全大写或全小写。

str := "Golang"
fmt.Println(strings.ToUpper(str)) // GOLANG
fmt.Println(strings.ToLower(str)) // golang

第11步:Trim 去除特定首尾字符

strings.Trim(s string, cutset string) string 删除字符串两端连续出现在 cutset 中的字符。TrimLeft 只删左边,TrimRight 只删右边。注意它是基于“字符集合”而非“前缀字符串”进行删除。

str := "###golang###"
fmt.Println(strings.Trim(str, "#")) // golang

以上就是Go语言字符串处理的详细内容,更多关于Go语言strings包的应用资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。