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处理字符串的资料请关注脚本之家其它相关文章!

相关文章

  • Go处理PDF的实现代码

    Go处理PDF的实现代码

    这篇文章主要介绍了Go处理PDF的实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • 在Go中创建自定义错误的方式总结

    在Go中创建自定义错误的方式总结

    在程序开发中错误处理是至关重要的,下面这篇文章主要给大家介绍了关于在Go中创建自定义错误的方式,文中通过代码介绍的非常详细,对大家学习或者使用Go具有一定的参考借鉴价值,需要的朋友可以参考下
    2024-01-01
  • Golang Printf,Sprintf,Fprintf 格式化详解

    Golang Printf,Sprintf,Fprintf 格式化详解

    这篇文章主要介绍了Golang Printf,Sprintf,Fprintf 格式化详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • Go语言内建函数len的使用

    Go语言内建函数len的使用

    Go语言中的len函数是一个内建函数,用于获取数组、切片、字符串、映射和通道等数据类型的长度或大小,本文介绍了len函数在不同数据类型中的使用场景和特点,感兴趣的可以了解一下
    2024-10-10
  • Golang中时间相关操作合集

    Golang中时间相关操作合集

    这篇文章主要为大家介绍了Golang中的各种时间相关操作,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-09-09
  • 轻松读懂Golang中的数组和切片

    轻松读懂Golang中的数组和切片

    这篇文章主要给大家介绍了关于Golang中数组和切片的相关资料,文中通过实例代码介绍的非常详细,对大家学习或者Golang具有一定的参考学习价值,需要的朋友可以参考下
    2022-03-03
  • Golang使用Gin框架实现HTTP上传文件过程介绍

    Golang使用Gin框架实现HTTP上传文件过程介绍

    由于需求中有文件上传这一个需求,在这里我们就学习一下go语言如何上传文件。本文主要通过表单的方式进行文件上传操作,本文实例为大家分享了Go实现文件上传操作的具体代码,供大家参考,具体内容如下
    2023-04-04
  • Golang实现将视频按照时间维度剪切的工具

    Golang实现将视频按照时间维度剪切的工具

    这篇文章主要为大家详细介绍了如何利用Golang实现将视频按照时间维度进行剪切,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起了解一下
    2022-12-12
  • 浅析golang如何处理json中的null

    浅析golang如何处理json中的null

    json 是一种常用的数据格式,在 go 使用 json 序列化和反序列化时比较方便的,但在使用过程中,会遇到一些问题,比如 null,所以下面我们就来看看golang如何处理json中的null吧
    2023-09-09
  • Go语言流程控制之goto语句与无限循环

    Go语言流程控制之goto语句与无限循环

    这篇文章主要介绍了Go语言流程控制之goto语句与无限循环,是golang入门学习中的基础知识,需要的朋友可以参考下
    2015-10-10

最新评论