Go语言 strings 包常用函数与方法详解

山间有风
山间有风
发布时间:2026-10-15| 5人浏览过
原创

Go语言中处理文本数据时,标准库 strings 提供了众多高性能的内置函数。本文详细介绍如何高效拼接字符串、进行大小写转换与模糊匹配、按条件替换与分割、修剪指定字符以及判断前缀后缀,辅以 Go 代码示例说明核心用法。

高效字符串拼接:strings.Builder

在需要频繁追加字符串的场景下,直接使用 + 运算符会导致大量临时字符串对象的创建和内存分配。推荐使用 strings.Builder,其底层基于切片实现,写入新内容仅需追加字节,大幅降低内存开销。

操作方法:定义一个 strings.Builder 实例,多次调用 WriteString 方法追加内容,最后通过 String() 获取完整结果。

import (
    "strings"
)

func main() {
    var builder strings.Builder
    builder.WriteString("hello")
    builder.WriteString(" ")
    builder.WriteString("world")
    builder.WriteString("!")
    result := builder.String()
    println(result) // 输出: hello world!
}

大小写转换:ToUpper 与 ToLower

Go 语言的字符串是不可变的。以下两个函数接收原字符串,并返回一个新的已转换的字符串:

  • strings.ToUpper(s string):将字符串中所有的小写字母转换为大写。
  • strings.ToLower(s string):将字符串中的所有大写字母转换为小写。

执行效果:当输入全为小写的 "hello" 时,ToUpper 返回 "HELLO";当输入为 "HELLO" 时,ToLower 返回 "hello"。

字符串比较:区分与不区分大小写

区分大小写比较:直接使用 == 运算符。由于 Go 中的字符串比较是严格区分大小写的,因此 "hello" == "HELLO" 的结果为 false。

不区分大小写比较:使用 strings.EqualFold(s, t string) bool。该函数忽略大小写差异进行比较,只要字母相同且顺序一致即视为相等。

import (
    "fmt"
    "strings"
)

func main() {
    s1 := "hello"
    s2 := "HELLO"
    fmt.Println(strings.EqualFold(s1, s2)) // true
}

字符串替换:Replace

使用 strings.Replace(s, old, new string, n int) 函数执行替换操作。参数 n 控制替换的次数:

  • 若 n < 0:替换字符串中所有的旧子串(old)。
  • 若 n >= 0:仅替换前 n 个匹配的旧子串。

应用场景:例如敏感词过滤时,设置 n = 1 可保留后续内容;设置 n = -1 则完全隐藏所有出现的目标词汇。

字符串分割与连接:Split 与 Join

字符串切割:使用 strings.Split(s, sep string) []string,以分隔符 sep 将字符串切割成多个片段,返回字符串切片。

strSlice := strings.Split("golang-is-awesome", "-")
// 结果为: ["golang" "is" "awesome"]

数组拼接:使用 strings.Join(elems []string, sep string) string,将字符串切片中的元素按照指定的连接符拼接成一个完整的长字符串,这是处理多片段数据的常用方式。

清理多余字符:TrimSpace 与 Trim 系列

去除空白:使用 strings.TrimSpace(s string) 去除首尾的所有空白字符(空格、换行、制表符等)。

修剪指定字符:针对非空白字符或特定符号,可使用以下三个函数:

  • strings.Trim(s, cutset):移除两端出现的 cutset 中包含的任何字符。
  • strings.TrimLeft(s, cutset):仅移除左端的 cutset 字符。
  • strings.TrimRight(s, cutset):仅移除右端的 cutset 字符。

这些函数会一直扫描直到遇到不在目标集合(cutset)内的字符为止。例如,对 "-go-" 进行 Trim('-'),最终得到 "go"。

前缀与后缀判定:HasPrefix 与 HasSuffix

判断开头:使用 strings.HasPrefix(s, prefix string) bool。如果字符串以给定前缀开始,返回 true,常用于文件格式或 URL 协议的判断。

判断结尾:使用 strings.HasSuffix(s, suffix string) bool。如果字符串以给定后缀结束,返回 true。

子串存在性检查:Contains

利用 strings.Contains(s, substr string) bool 快速验证一个父串中是否包含特定的子串。相比先提取再进行比对,该函数直接提供布尔类型的匹配结果。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。