GO语言字符串处理Strings包的函数使用示例讲解

Elena
Elena
发布时间:2026-10-16 | 4人浏览过
原创

本文深入解析Go语言中 strings 和 strconv 包的核心函数,通过具体代码示例讲解字符串的包含判断、拼接、分割、查找及替换等操作,并演示如何将整数、布尔值和浮点数转换为字符串或进行反向解析,帮助开发者高效处理文本数据。

常用的字符串处理函数

在处理文本数据时,strings 包提供了大量便捷的方法,以下是开发中最常用的几个核心函数及其使用场景。

第1步:判断字符串是否包含子串(Contains)

目的:验证目标字符串中是否存在特定片段,常用于过滤条件或模糊匹配。

  • 入口/函数:func Contains(s, substr string) bool
  • 参数说明:s 为被查找的主串,substr 为需要搜索的子串。
  • 返回值:若包含则返回 true,否则返回 false。
  • 完整代码示例:
// 查找一个字符串在另一个字符串中是否出现
str1 := "hello world"
str2 := "g"
b := strings.Contains(str1, str2)

if b {
	fmt.Println("找到了")
} else {
	fmt.Println("没有找到")
}

第2步:连接字符串切片(Join)

目的:将一组字符串按照指定分隔符拼接成单个长字符串,适用于日志格式化或路径构建。

  • 入口/函数:func Join(a []string, sep string) string
  • 参数说明:a 是待拼接的字符串切片,sep 是分隔符。
  • 演示示例:
slice := []string{"123", "456", "789"}
// 字符串的连接
result := strings.Join(slice, "")
fmt.Println(result)
// 输出: 123456789

第3步:查找字符首次出现的位置(Index)

目的:获取子串在主串中的起始索引下标。

  • 入口/函数:func Index(s, substr string) int
  • 结果判定:找到返回非负整数的下标,未找到返回 -1。
  • 演示示例:
str1 := "hello world"
str2 := "e"
i := strings.Index(str1, str2)
fmt.Println(i)
// 输出: 1 (下标从0开始)

第4步:字符串重复生成(Repeat)

目的:将指定字符串复制多次,用于生成填充文本或占位内容。

  • 入口/函数:func Repeat(s string, count int) string
  • 参数说明:count 为重复次数。
  • 演示示例:
original := "Hello"
repeated := strings.Repeat(original, 3)
fmt.Println(repeated)
// 输出: HelloHelloHello

第5步:字符替换处理(Replace)

目的:将字符串中的某些部分替换为新内容,支持控制替换数量。

  • 入口/函数:func Replace(s, old, new string, n int) string
  • 参数说明:n 表示替换次数。若 n < 0 则表示替换所有出现的 old 子串;n=1 则仅替换第一个。
  • 演示示例:屏蔽敏感词汇(全量替换)
text := "性感网友在线取名性感性感"
// 如果替换次数小于0 表示全部替换
masked := strings.Replace(text, "性感", "**", -1)
fmt.Println(masked)
// 输出: **网友在线取名****

第6步:字符串分割解析(Split)

目的:根据特定符号将长字符串切割成字符串切片,常用于解析配置或URL参数。

  • 入口/函数:func Split(s, sep string) []string
  • 演示示例:提取邮箱用户名
email := "123456789@qq.com"
parts := strings.Split(email, "@")
username := parts[0]
fmt.Println(username)
// 输出: 123456789

第7步:去除首尾字符(Trim)

目的:清理字符串两端的无关字符(如标点、空格),使数据更干净。

  • 入口/函数:func Trim(s string, cutset string) string
  • 参数说明:cutset 定义了需要移除的所有字符集合。
  • 演示示例:
rawInput := "====a===u=ok===="
cleaned := strings.Trim(rawInput, "=")
fmt.Println(cleaned)
// 输出: a===u=ok

第8步:按空白符分割(Fields)

目的:专门处理自然语言文本,自动去掉多余的空格并按单词切分。

  • 入口/函数:func Fields(s string) []string
  • 特性:忽略连续空格,直接返回有效的单词切片。
  • 演示示例:
str := "    are you ok    "
words := strings.Fields(str)
fmt.Printf("%v", words)
// 输出: [are you ok]

数据类型间的字符串转换

除了处理纯文本,Go语言还经常需要将数字、布尔值等基础类型转为字符串以进行输出或网络传输。这类功能由 strconv 包提供,主要分为格式化(转字符串)、解析(转原生类型)和追加三种模式。

第9步:格式化转换(Format系列)

目的:将非字符串类型的变量(如布尔值、整型、浮点型)转换为字符串格式。

  • 示例代码:
// 将布尔值转为字符串
strBool := strconv.FormatBool(true)
fmt.Println(strBool) // true

// 将int转为字符串(支持进制转换,此处为十进制)
strInt := strconv.FormatInt(120, 10)
fmt.Println(strInt) // 120

// 将float转为字符串 ('f'表示小数形式, 4位精度, 64位浮点)
strFloat := strconv.FormatFloat(3.14159, 'f', 4, 64)
fmt.Println(strFloat) // 3.1416

// 快捷方式:将整数转字符串
strItoa := strconv.Itoa(123)
fmt.Println(strItoa)

第10步:解析转换(Parse系列)

目的:将读取到的字符串还原回原生数据类型。

  • 关键步骤:解析过程通常伴随错误处理,建议始终检查返回的 err。
  • 示例代码:
// 字符串转布尔值
b, err := strconv.ParseBool("true")
if err != nil {
	fmt.Println("解析出错")
} else {
	fmt.Printf("%T\n", b) // bool
}

// 字符串转int (支持十六进制 "abc" 解析)
v, err := strconv.ParseInt("123", 10, 64)
fmt.Println(v, err)

// 字符串转float
f, _ := strconv.ParseFloat("3.14159", 64)
fmt.Println(f)

// 便捷方式:字符串转int
i, _ := strconv.Atoi("123")
fmt.Println(i)

第11步:字节数组追加(Append系列)

目的:将转换后的字符串内容直接添加到现有的 []byte 字节切片中,效率较高。

  • 示例代码:
// 预分配容量以提高性能
buf := make([]byte, 0, 1024)

// 追加各种类型到字节数组
buf = strconv.AppendBool(buf, false)
buf = strconv.AppendInt(buf, 123, 2)      // 二进制追加
buf = strconv.AppendFloat(buf, 3.14159, 'f', 4, 64)
buf = strconv.AppendQuote(buf, "hello")   // 带引号追加

fmt.Println(string(buf))
// 输出类似: false11110113.1416"hello"
以上就是GO语言字符串处理Strings包的函数使用示例讲解的详细内容,更多关于GO语言字符串处理Strings包函数的资料请关注本站其它相关文章!
相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表