Golang

关注公众号 jb51net

关闭
首页 > 脚本专栏 > Golang > Go字符串核心库strings包

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

作者:程序员爱钓鱼

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

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

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包内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文