Go strings包处理字符串的完整指南

 更新时间:2026年03月13日 09:43:33   作者:程序员爱钓鱼  
在 Go 语言开发中,字符串处理几乎无处不在,Go 标准库中的 strings 包提供了一整套 高效、简单、常用的字符串处理函数,下面小编就和大家详细介绍一下它的具体使用吧

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

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

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

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

一、strings 包简介

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

主要功能包括:

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

导入方式:

import "strings"

二、字符串判断函数

判断是否包含字符串

使用 strings.Contains

示例:

package main

import (
	"fmt"
	"strings"
)

func main() {

	text := "hello golang"

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

}

输出

true

常见用途:

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

判断前缀

使用 strings.HasPrefix

示例:

str := "image.png"

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

输出

true

常见用途:

  • 文件类型判断
  • URL 路径检测

判断后缀

使用 strings.HasSuffix

示例:

name := "photo.jpg"

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

输出

true

常用于:

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

三、字符串查找

查找字符串位置

使用 strings.Index

示例:

text := "hello world"

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

输出

6

返回:

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

最后一次出现位置

使用 strings.LastIndex

示例:

text := "go go golang"

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

输出

6

适用于:

路径处理

  • 日志解析

四、字符串分割

Split

最常用字符串分割函数。

示例:

str := "apple,banana,orange"

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

fmt.Println(list)

输出

[apple banana orange]

常用于:

  • CSV解析
  • 配置解析
  • 日志处理

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

字符串查找

  • Contains
  • HasPrefix
  • HasSuffix

字符串处理

  • Split
  • Join
  • Replace
  • Trim

字符串构建

strings.Builder

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

以上就是Go strings包处理字符串的完整指南的详细内容,更多关于Go strings处理字符串的资料请关注脚本之家其它相关文章!

相关文章

  • Golang 语言极简类型转换库cast的使用详解

    Golang 语言极简类型转换库cast的使用详解

    本文我们通过 cast.ToString() 函数的使用,简单介绍了cast 的使用方法,除此之外,它还支持很多其他类型,在这没有多多介绍,对Golang 类型转换库 cast相关知识感兴趣的朋友一起看看吧
    2021-11-11
  • 在go语言中安装与使用protobuf的方法详解

    在go语言中安装与使用protobuf的方法详解

    protobuf以前只支持C++, Python和Java等语言, Go语言出来后, 作为亲儿子, 那有不支持的道理呢? 这篇文章主要给大家介绍了关于在go语言中使用protobuf的相关资料,文中介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
    2017-08-08
  • GO语言获取系统环境变量的方法

    GO语言获取系统环境变量的方法

    这篇文章主要介绍了GO语言获取系统环境变量的方法,实例分析了Getenv方法操作环境变量的技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-02-02
  • Golang并发发送HTTP请求的各种方法

    Golang并发发送HTTP请求的各种方法

    在 Golang 领域,并发发送 HTTP 请求是优化 Web 应用程序的一项重要技能,本文探讨了实现此目的的各种方法,从基本的 goroutine 到涉及通道和sync.WaitGroup 的高级技术,需要的朋友可以参考下
    2024-02-02
  • Go语法糖之‘...’ 的使用实例详解

    Go语法糖之‘...’ 的使用实例详解

    语法糖(Syntactic sugar),也译为糖衣语法,指计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。这篇文章主要给大家介绍Go语法糖之‘...’ 的使用,感兴趣的朋友一起看看吧
    2018-10-10
  • 关于golang指针的有限操作详解

    关于golang指针的有限操作详解

    传统意义上来说,指针是一个指向某个确切的内存地址的值,这个内存地址可以是任何数据或代码的起始地址,在Go语言中有几种东西可以代表"指针",本文给大家介绍的是关于golang指针的有限操作,感兴趣的同学可以参考一下
    2023-08-08
  • go项目实现mysql接入及web api的操作方法

    go项目实现mysql接入及web api的操作方法

    这篇文章主要介绍了go项目实现mysql接入以及web api,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-08-08
  • 深入理解golang中io.Writer接口的使用

    深入理解golang中io.Writer接口的使用

    io 是一个 Golang 标准库包,它为围绕输入和输出的许多操作和用例定义了灵活的接口,这篇文章主要为大家介绍了Go中Writer接口的使用,需要的可以参考下
    2023-10-10
  • 详解Golang中interface接口的原理和使用技巧

    详解Golang中interface接口的原理和使用技巧

    interface 接口在 Go 语言里面的地位非常重要,是一个非常重要的数据结构。本文主要介绍了Golang中interface接口的原理和使用技巧,希望对大家有所帮助
    2022-11-11
  • golang切片反序实例

    golang切片反序实例

    这篇文章主要介绍了golang切片反序实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12

最新评论