Go字符串查找替换依赖strings包,所有操作返回新字符串;基础查找用Contains、Index等,替换用Replace/ReplaceAll;正则替换需regexp包;辅助处理含大小写转换和空白裁剪。

Go语言中字符串查找和替换主要依靠标准库 strings 包,它提供了一系列高效、不可变(字符串在Go中是只读的)的操作函数。所有操作都返回新字符串,原字符串不会被修改。
基础查找:判断是否存在、定位位置
常用函数包括 strings.Contains、strings.Index、strings.LastIndex 等:
-
strings.Contains(s, substr)返回bool,判断s是否包含子串substr -
strings.Index(s, substr)返回首次出现的起始索引(int),未找到返回-1 -
strings.LastIndex(s, substr)返回最后一次出现的起始索引 - 若需区分大小写,可用
strings.ContainsIgnoreCase(Go 1.19+)或先转小写再查
简单替换:单次与全局替换
使用 strings.Replace 和 strings.ReplaceAll:
-
strings.Replace(s, old, new, n)替换前n次出现的old;n = -1表示全部替换(等价于ReplaceAll) -
strings.ReplaceAll(s, old, new)更直观,直接替换所有匹配项 - 注意:这些函数只匹配**字面量子串**,不支持正则表达式
高级替换:基于正则表达式
当需要模糊匹配(如替换所有数字、邮箱、HTML标签等),应结合 regexp 包:
立即学习“go语言免费学习笔记(深入)”;
- 用
regexp.Compile编译正则表达式(建议复用以提升性能) -
re.ReplaceAllString(s, new)替换所有匹配的字符串片段 -
re.ReplaceAllStringFunc(s, f)对每个匹配片段应用函数f再替换 - 例如:
re := regexp.MustCompile(`\d+`); result := re.ReplaceAllString(text, "[number]")
大小写与空白处理:辅助查找替换场景
实际文本处理中常需预处理,strings 提供了便捷函数:
-
strings.ToLower(s)/strings.ToUpper(s)统一大小写后查找更鲁棒 -
strings.TrimSpace(s)去首尾空白;strings.Trim(s, " \t\n")自定义裁剪字符 -
strings.Fields(s)按空白拆分单词,适合按词替换(配合strings.Join组合)










