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

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

本文详解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 相关产品和应用

全部下载

专题列表