Go语言strings包基本操作
1.字符串比较
常用方法: strings.Compare(),strings.EqualFold()
1 2 3 4 5 6 7 8 | func main() { a := "Hello" b := "hello" // 用于比较两个字符串的大小,如果两个字符串相等,返回为 0。如果 a 小于 b ,返回 -1 ,反之返回 1 fmt.Println(strings.Compare(a, b)) // -1 // EqualFold 函数,计算 s 与 t 忽略字母大小写后是否相等 fmt.Println(strings.EqualFold(a, b)) //true } |
2.判断是否存在某字符或字符串
常用方法: strings.Contains()
1 2 3 4 5 6 7 8 | func main() { a := "Hello" b := "H" c := "你好世界" d := "世界" fmt.Println(strings.Contains(a, b)) // true fmt.Println(strings.Contains(c, d)) // true } |
3.判断某字符出现的次数
常用方法: strings.Count(),当substr为空时,返回utf8.RuneCountInString(s) + 1
1 2 3 4 5 6 7 8 9 10 11 | func main() { a := "Hello" b := "H" fmt.Println(strings.Count(a, b)) // 1 c := "世界" d := []rune(c) fmt.Println(len(d)) // 2 fmt.Println(utf8.RuneCountInString(c)) // 2 // 当substr为空时,返回utf8.RuneCountInString(s) + 1 fmt.Println(strings.Count(c, "" )) //3 } |
4.字符串分割
常用方法: strings.Fields(), strings.FieldsFunc(), strings.Split(), strings.SplitAfter(), strings.SplitN(), strings.SplitAfterN()
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | func main() { a := "how are you" b := `你好 中国 世界 地球` // strings.Fields()用一个或多个连续的空格分隔字符串,常见间隔符包括:'\t', '\n', '\v', '\f', '\r', ' ', U+0085 (NEL), U+00A0 (NBSP) fmt.Println(strings.Fields(a)) // [how are you] fmt.Println(strings.Fields(b)) // [你好 中国 世界 地球] // strings.FieldsFunc(str, func)用Unicode代码点进行分隔:满足 f(c) 返回 true, 通过实现一个回调函数来指定分隔字符串str的字符 c := " 1bv 2bd 3mm " fmt.Println(strings.FieldsFunc(c, unicode.IsDigit)) // [ bv bd mm ] // strings.Split() d := "how are you" e := "hello" fmt.Println(strings.Split(d, " " )) // [how are you] // sep为空时,分成一个个utf-8字符 fmt.Println(strings.Split(e, "" )) // [h e l l o] // strings.SplitAfter() 会保留分割字符 f := "how,are,you" fmt.Println(strings.SplitAfter(f, "," )) // [how, are, you] // strings.SplitN() 第三个参数为0时返回空切片,小于0时返回所以子串,大于0时表示返回的切片中有几个元素 fmt.Println(strings.SplitN(f, "," , -1)) // [how are you] fmt.Println(strings.SplitN(f, "," , 0)) // [] fmt.Println(strings.SplitN(f, "," , 2)) // [how are,you] fmt.Println(strings.SplitN(f, "," , 5)) // [how are you] // strings.SplitAfterN() 同SplitN() fmt.Println(strings.SplitAfterN(f, "," , 2)) // [how, are,you] } |
5.判断字符串有某个前缀或者后缀
常用方法: strings.HasPrefix(), strings.HasSuffix()
1 2 3 4 5 6 | func main() { a := "golang" fmt.Println(strings.HasPrefix(a, "go" )) //true fmt.Println(strings.HasSuffix(a, "go" )) //false fmt.Println(strings.HasSuffix(a, "ng" )) //true } |
6.字符串拼接
常用方法: strings.Join()
1 2 3 4 | func main() { a := []string{ "a" , "b" , "c" } fmt.Println(strings.Join(a, "&" )) //a&b&c } |
7.字符串替换
常用方法: strings.Replace()
1 2 3 4 5 | func main() { a := "abcd,世界" fmt.Println(strings.Replace(a, "a" , "A" , -1)) //Abcd,世界 fmt.Println(strings.Replace(a, "世" , "B" , -1)) //abcd,B界 } |
8.字符串大小写转换
常用方法: strings.ToLower(), strings.ToUpper()
1 2 3 4 5 6 | func main() { a := "abcd" b := "ABCD" fmt.Println(strings.ToUpper(a)) //ABCD fmt.Println(strings.ToLower(b)) //abcd } |
9.字符串首字母大写
常用方法: strings.Title(), strings.ToTitle()
1 2 3 4 5 | func main() { a := "hello world" fmt.Println(strings.Title(a)) // Hello World fmt.Println(strings.ToTitle(a)) // HELLO WORLD } |
10.修剪
常用方法: strings.Trim(), strings.TrimLeft(), strings.TrimRight(), strings.TrimSpace()
1 2 3 4 5 6 7 8 9 10 11 12 13 | func main() { a := "ababab你好 cdaaa a" b := " abababHELLO " // Trim去除首尾符合cutset中任意字符的字符 fmt.Println(strings.Trim(a, "ab" )) // 你好 cdaaa // TrimLeft去除左侧满足条件的字符 fmt.Println(strings.TrimLeft(a, "ab" )) //你好 cdaaa a //TrimRight去除右侧满足条件的字符 fmt.Println(strings.TrimRight(a, "a d" )) // ababab你好 c //TrimSpace去除收尾间隔符 fmt.Println(strings.TrimSpace(b)) //abababHELLO } |
11.多字符替换
常用方法: strings.NewReplacer()
1 2 3 4 5 6 7 8 9 | func main() { file, _ := os.Create( "1.txt" ) a := "<hello>,abc<w>321" r := strings.NewReplacer( "<" , "^^" , ">" , "$$" ) fmt.Println(r.Replace(a)) //^^hello$$,abc^^w$$321 _, _ = r.WriteString(file, a) //将替换结果直接写入文件 } |
12.Builder类型
1 2 3 4 5 6 | func main() { b := strings.Builder{} b.WriteString( "你好" ) b.WriteString( "世界" ) fmt.Println(b.String()) } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!