Go字符串处理核心库strings包的完整指南与实战记录

 更新时间:2026年06月17日 09:22:20   作者:程序员爱钓鱼  
Go语言的strings包提供了丰富的字符串操作功能,包括查找、替换、分割、拼接、大小写转换等,这些功能使得开发者能够轻松处理各种文本数据,从而提高代码的可读性和效率,这篇文章主要介绍了Go字符串处理核心库strings包的完整指南与实战记录,需要的朋友可以参考下

在 Go 语言开发中,字符串处理几乎无处不在,例如:

  • 文本解析
  • 数据清洗
  • Web 开发
  • 日志处理
  • 爬虫程序
  • CLI 工具

Go 标准库中的 strings 包提供了一整套 高效、简单、常用的字符串处理函数。掌握 strings 包,可以极大提升 Go 开发效率。

本文将系统介绍 strings 包的常用函数、使用场景以及实战案例。

一、strings 包简介

strings 是 Go 标准库中用于 字符串操作 的核心工具库。

主要功能包括:

字符串查找 字符串替换 字符串分割 字符串拼接 字符串判断 大小写转换 字符串构建

导入方式:

import "strings"

二、字符串判断函数

1 判断是否包含字符串

使用 strings.Contains

示例:

package main

import (
	"fmt"
	"strings"
)

func main() {

	text := "hello golang"

	fmt.Println(strings.Contains(text, "go"))

}

输出

true

常见用途:

日志过滤 关键词检测 文本搜索

2 判断前缀

使用 strings.HasPrefix

示例:

str := "image.png"

fmt.Println(strings.HasPrefix(str, "image"))

输出

true

常见用途:

文件类型判断 URL 路径检测

3 判断后缀

使用 strings.HasSuffix

示例:

name := "photo.jpg"

fmt.Println(strings.HasSuffix(name, ".jpg"))

输出

true

常用于:

文件格式检测 日志文件判断

三、字符串查找

1 查找字符串位置

使用 strings.Index

示例:

text := "hello world"

fmt.Println(strings.Index(text, "world"))

输出

6

返回:

字符串第一次出现的位置 如果不存在返回 -1

2 最后一次出现位置

使用 strings.LastIndex

示例:

text := "go go golang"

fmt.Println(strings.LastIndex(text, "go"))

输出

6

适用于:

路径处理 日志解析

四、字符串分割

1 Split

最常用字符串分割函数。

示例:

str := "apple,banana,orange"

list := strings.Split(str, ",")

fmt.Println(list)

输出

[apple banana orange]

常用于:

CSV解析 配置解析 日志处理

2 SplitN

限制分割次数。

示例:

str := "a:b:c:d"

result := strings.SplitN(str, ":", 2)

fmt.Println(result)

输出

[a b:c:d]

适合解析:

key:value HTTP header

五、字符串替换

使用 strings.Replace

示例:

text := "hello world world"

result := strings.Replace(text, "world", "go", 1)

fmt.Println(result)

输出

hello go world

参数说明:

old   原字符串
new   新字符串
n     替换次数

如果替换全部:

n = -1

示例:

strings.Replace(text, "world", "go", -1)

六、字符串去除空格

Trim

去除两边字符。

示例:

str := "   hello   "

fmt.Println(strings.TrimSpace(str))

输出

hello

常用于:

用户输入清理 数据清洗

TrimPrefix

删除前缀。

str := "https://example.com"

fmt.Println(strings.TrimPrefix(str, "https://"))

输出

example.com

TrimSuffix

删除后缀。

name := "photo.jpg"

fmt.Println(strings.TrimSuffix(name, ".jpg"))

输出

photo

七、字符串大小写转换

转大写

strings.ToUpper("golang")

输出

GOLANG

转小写

strings.ToLower("GoLang")

输出

golang

常用于:

搜索统一格式 数据库存储

八、字符串拼接

Join

用于拼接字符串数组。

示例:

list := []string{"go", "python", "java"}

fmt.Println(strings.Join(list, ","))

输出

go,python,java

常用于:

生成 CSV 日志输出

九、高性能字符串构建

在循环拼接字符串时,推荐使用 strings.Builder

示例:

package main

import (
	"fmt"
	"strings"
)

func main() {

	var builder strings.Builder

	builder.WriteString("hello ")
	builder.WriteString("golang")

	fmt.Println(builder.String())

}

输出

hello golang

优点:

减少内存分配 性能更高

适合:

HTML生成 日志拼接 大文本生成

十、Repeat 重复字符串

示例:

fmt.Println(strings.Repeat("go ", 3))

输出

go go go

用途:

文本生成 测试数据

十一、Fields 按空格分割

示例:

text := "go is a powerful language"

list := strings.Fields(text)

fmt.Println(list)

输出

[go is a powerful language]

自动识别空格。

适合解析:

日志 命令行输入

十二、实际开发案例

案例1 解析文件扩展名

func getExt(name string) string {

	parts := strings.Split(name, ".")

	return parts[len(parts)-1]

}

示例:

photo.jpg

返回:

jpg

案例2 过滤 URL 前缀

func cleanURL(url string) string {

	url = strings.TrimPrefix(url, "http://")
	url = strings.TrimPrefix(url, "https://")

	return url

}

输入:

https://google.com

输出:

google.com

案例3 批量替换文本

func cleanText(text string) string {

	text = strings.Replace(text, "\n", "", -1)
	text = strings.Replace(text, "\t", "", -1)

	return text

}

十三、strings 与 bytes 区别

Go 中有两个类似库:

strings
bytes

区别:

处理类型
stringsstring
bytes[]byte

示例:

字符串:

strings.Contains("hello", "he")

字节:

bytes.Contains([]byte("hello"), []byte("he"))

如果处理:

文件数据 网络数据

通常使用 bytes

十四、开发建议

实际开发中推荐:

字符串判断

Contains
HasPrefix
HasSuffix

字符串处理

Split
Join
Replace
Trim

性能优化

strings.Builder

这样可以保证代码:

可读性好 性能高 维护简单

十五、总结

strings 是 Go 语言最常用的标准库之一,几乎所有项目都会用到。

核心功能包括:

字符串判断

Contains
HasPrefix
HasSuffix

字符串查找

Index
LastIndex

字符串处理

Split
Join
Replace
Trim

字符串构建

strings.Builder

熟练掌握 strings 包,可以极大提升 Go 开发效率,尤其是在:日志系统、Web开发、爬虫程序、CLI工具、文本处理程序等场景中。

到此这篇关于Go字符串处理核心库strings包的文章就介绍到这了,更多相关Go字符串核心库strings包内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • golang中map增删改查的示例代码

    golang中map增删改查的示例代码

    在Go语言中,map是一种内置的数据结构,用于存储键值对,本文主要介绍了golang中map增删改查的示例代码,具有一定的参考价值,感兴趣的可以了解一下
    2023-11-11
  • Go语言中的Slice学习总结

    Go语言中的Slice学习总结

    这篇文章主要介绍了Go语言中的Slice学习总结,本文讲解了Slice的定义、Slice的长度和容量、Slice是引用类型、Slice引用传递发生“意外”等内容,需要的朋友可以参考下
    2014-11-11
  • Golang Model 字段自动化校验设计方案

    Golang Model 字段自动化校验设计方案

    在我们日常开发中,不可避免的总要去进行各种参数校验,但是如果在某个场景中,要校验的字段非常多,并且在其中还有耦合关系,那么我们手写校验逻辑就变得非常的低效且难以维护,本篇文档就基于 DDD 领域模型设计的思想下,提供自动化的校验模型字段,感兴趣的朋友一起看看吧
    2025-02-02
  • go语言的工作空间和GOPATH环境变量介绍

    go语言的工作空间和GOPATH环境变量介绍

    这篇文章主要介绍了go语言的工作空间和GOPATH环境变量介绍,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • 浅析Go语言如何避免数据竞争Data Race和竞态条件Race Condition

    浅析Go语言如何避免数据竞争Data Race和竞态条件Race Condition

    在并发编程中,数据竞争 (Data Race) 和 竞态条件 (Race Condition) 是两个常见的问题,本文将简单介绍一下二者如何避免,有需要的可以了解下
    2025-01-01
  • golang struct json tag的使用以及深入讲解

    golang struct json tag的使用以及深入讲解

    这篇文章主要给大家介绍了关于golang struct json tag的使用以及深入讲解,文中通过实例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2022-02-02
  • 详解Go语言中自定义结构体能作为map的key吗

    详解Go语言中自定义结构体能作为map的key吗

    在Go中,引用类型具有动态的特性,可能会被修改或指向新的数据,这就引发了一个问题—能否将包含引用类型的自定义结构体作为map的键呢,本文就来和大家想想讲讲
    2023-06-06
  • Go语言WaitGroup使用时需要注意的坑

    Go语言WaitGroup使用时需要注意的坑

    Go语言中WaitGroup的用途是它能够一直等到所有的goroutine执行完成,并且阻塞主线程的执行,直到所有的goroutine执行完成。之前一直使用也没有问题,但最近通过同事的一段代码引起了关于WaitGroup的注意,下面这篇文章就介绍了WaitGroup使用时需要注意的坑及填坑。
    2016-12-12
  • Go语言中数据压缩与解压的实现

    Go语言中数据压缩与解压的实现

    本文介绍了Go语言中常见压缩格式的使用方法,compress标准库支持gzip、zlib、flate等格式,主要通过io.Reader和io.Writer接口实现压缩解压功能,下面就来详细的介绍一下,感兴趣的可以了解一下
    2025-10-10
  • golang-切片slice的创建方式

    golang-切片slice的创建方式

    这篇文章主要介绍了golang-切片slice的创建方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-04-04

最新评论