Skip to content
On this page

strings包

Go中使用strings包来完成对字符串的操作

判断前缀/后缀

HasPrefix

  • 使用strings.HasPrefix判断字符串str是否以prefix开头
Go
strings.HasPrefix(str, prefix string) bool

代码示例

Go
str1 := "hash是开发计划"
fmt.Println(strings.HasPrefix(str1, "hash")) // true
fmt.Println(strings.HasPrefix(str1, "ha")) // true
fmt.Println(strings.HasPrefix(str1, "hashs")) // false

HasSuffix

  • 使用strings.HasSuffix判断字符串str是否以suffix结尾
Go
strings.HasSuffix(s, suffix string) bool

代码示例

Go
str2 := "asd是否会words"
fmt.Println(strings.HasSuffix(str2, "s")) // true
fmt.Println(strings.HasSuffix(str2, "wo")) // false
fmt.Println(strings.HasSuffix(str2, "会words")) // true

字符串包含

  • 使用strings.Contains判断字符串str是否包含substr
Go
strings.Contains(s, substr string) bool

代码示例

Go
str3 := "whatgowotk"
fmt.Println(strings.Contains(str3, "go")) // true
fmt.Println(strings.Contains(str3, "og")) // false
fmt.Println(strings.Contains(str3, "wotk")) // true

字符串索引

Index

  • 使用strings.Index返回字符串substr在字符串str中的索引,该索引是substr中第一个字符在str中的索引,如果str中不包含substr,返回-1
Go
strings.Index(s, str string) int

代码示例

Go
str5 := "shfwuebrqr"
fmt.Println(strings.Index(str5, "ud")) // -1
fmt.Println(strings.Index(str5, "fwu")) // 2
fmt.Println(strings.Index(str5, "r")) // 7

LastIndex

  • 使用strings.LastIndex返回字符串substr在字符串str最后出现位置的索引,该索引是substr第一个字符str中的索引,如果str中不包含substr,返回-1
Go
strings.LastIndex(s, str string) int

代码示例

Go
str6 := "shfwuebrqr"
fmt.Println(strings.Index(str6, "r")) // 7
fmt.Println(strings.Index(str6, "she")) // -1
fmt.Println(strings.Index(str6, "s")) // 0

字符串替换

  • 使用strings.Replace方法把字符串str中的前nold字符串替换为字符串new,并返回一个新的字符串

  • 如果n-1,则将所有的old替换为new

Go
strings.Replace(str, old, new string, n int) string

代码示例

Go
str7 := "abgcuyabiucu"
fmt.Println(strings.Replace(str7, "ab", "--", 1)) // --gcuyabiucu
fmt.Println(strings.Replace(str7, "ab", "--", 2)) // --gcuy--iucu
fmt.Println(strings.Replace(str7, "u", "=", -1)) // abgc=yabi=c=

统计字符串出现次数

  • strings.Count用于计算字符串substr在字符串str中出现的次数
Go
strings.Count(str, substr string) int

代码示例

Go
str8 := "abgcuyabiucudd"
fmt.Println(strings.Count(str8, "a")) // 2
fmt.Println(strings.Count(str8, "ab")) // 2
fmt.Println(strings.Count(str8, "u"))  // 3
fmt.Println(strings.Count(str8, "d")) // 2
fmt.Println(strings.Count(str8, "dd")) // 1

重复字符串

  • strings.Repeat用于重复count次字符串str并返回一个新的字符串
Go
strings.Repeat(str, count int) string

代码示例

Go
fmt.Println(strings.Repeat("a", 2)) // aa
fmt.Println(strings.Repeat("a-b", 2)) // a-ba-b
fmt.Println(strings.Repeat("a b", 2)) // a ba b

转换大小写

  • strings.ToLower将字符串中的Unicode字符全部转换为相应的小写字符

  • strings.ToUpper将字符串中的Unicode字符全部转换为相应的大写字符

Go
strings.ToLower(str) string
strings.ToUpper(str) string

代码示例

Go
str9 := "UhtKWlwTsO"
fmt.Println(strings.ToLower(str9)) // uhtkwlwtso
fmt.Println(strings.ToUpper(str9)) // UHTKWLWTSO

字符串格式化

  • strings.TrimSpace移除字符串前后空格

  • strings.Trim 移除字符串开头结尾xxx

  • strings.TrimLeft 移除字符串开头xxx

  • strings.TrimRight 移除字符串结尾xxx

Go
strings.TrimSpace(str)
strings.Trim(str, "xxx")
strings.TrimLeft(str, "xxx")
strings.TrimRight(str, "xxx")

代码示例

Go
str10 := " ehe ll o world e"
str11 := "hell o world eh"
fmt.Println(strings.TrimSpace(str10)) // "ehe ll o world e"
fmt.Println(strings.Trim(str11, "h")) // "ell o world e"
fmt.Println(strings.TrimLeft(str11, "e")) // "hell o world eh"
fmt.Println(strings.TrimRight(str11, "eh")) // "hell o world"

字符串切割

  • strings.Fields,按空格分割字符串,返回slcie,如果是空字符串,返回空slice

  • strings.Split,基于自定义分割符号step对字符串分割,返回slice

Go
strings.Fields(str) slice
strings.Split(str, step)

代码示例

Go
str12 := "hello world"
str13 := "张,李,孙,"
str14 := ""
fmt.Printf("值为 %v, 类型为 %T\n", strings.Fields(str12), strings.Fields(str12))  // 值为 [hello world], 类型为 []string
fmt.Printf("值为 %v, 类型为 %T\n", strings.Fields(str14), strings.Fields(str14)) // 值为 [], 类型为 []string
fmt.Printf("值为 %v, 类型为 %T\n", strings.Split(str13, ","), strings.Split(str13, ",")) // 值为 [张 李 孙 ], 类型为 []string

拼接slice到字符串

  • strings.Join用于将元素类型为stringslice使用分割符号来拼接组成一个字符串
Go
strings.Join(sl []string, step string) string

代码示例

Go
name := []string{"张环", "李朗", "沈韬", "肖豹"}
fmt.Println(strings.Join(name, "-")) // "张环-李朗-沈韬-肖豹"
fmt.Println(strings.Join(name, " ")) // "张环 李朗 沈韬 肖豹"
fmt.Println(strings.Join(name, "%")) // "张环%李朗%沈韬%肖豹"