Go语言strings包常用操作示例与说明
本文详解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包的应用资料请关注本站其它相关文章!
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













