Golang标准库学习 - Strings
hanpy

strings 包实现了用于操作字符的简单函数。

常用的方法列表

strings标准库文档

方法名 描述
EqualFold(s, t string) bool 判断两个字符串是否相同(忽略大小写)
HasPrefix(s, prefix string) bool 判断s是否有前缀字符串prefix。
HasSuffix(s, suffix string) bool 判断s是否有后缀字符串suffix
Contains(s, substr string) bool 判断字符串s是否包含子串substr,(substr如果是“ ”返回true)
Index(s, sep string) int 子串sep在字符串s中第一次出现的位置,不存在则返回-1
LastIndex(s, sep string) int 子串sep在字符串s中最后一次出现的位置,不存在则返回-1。
Title(s string) string 返回s中每个单词的首字母都改为标题格式的字符串拷贝。
ToLower(s string) string 转换为小写
ToUpper(s string) string 转换为大写

Contains

判断字符串s是否包含子串substr,(substr如果是“ ”返回true)

1
fmt.Println(strings.Contains("seafood", ""))	// true

Index

子串sep在字符串s中第一次出现的位置,不存在则返回-1

1
2
fmt.Println(strings.Index("chicken", "ken"))	// 4
fmt.Println(strings.Index("chicken", "dmr")) // -1

LastIndex

子串sep在字符串s中最后一次出现的位置,不存在则返回-1。

1
2
3
fmt.Println(strings.Index("go gopher", "go"))	// 0
fmt.Println(strings.LastIndex("go gopher", "go")) // 3
fmt.Println(strings.LastIndex("go gopher", "rodent")) // -1

Title

1
fmt.Println(strings.Title("hello wor1d")) // Hello Wor1d

ToLower | ToUpper

1
2
fmt.Println(strings.ToLower("HELLO")) // hello
fmt.Println(strings.ToUpper("word")) // WORD

字符串分割

方法名 描述
Fields(s string) []string 将字符串s以空白字符分割,返回切片
FieldsFunc(s string, f func(rune) bool) []string 使用函数f来确定分割符如果字符串全部是分隔符或者是空字符串的话,
会返回空切片。
Split(s, sep string) []string 将字符串s以sep作为分割符进行分割,
分割后字符最后去掉sep,返回切片
SplitN(s, sep string, n int) []string 将字符串s以sep作为分割符进行分割,
分割后字符最后去掉sep,n决定分割成切片长度
SplitAfter(s, sep string) []string 将字符串s以sep作为分割符进行分割,
分割后字符最后加上sep,返回切片
SplitAfterN(s, sep string, n int) []string 将字符串s以sep作为分割符进行分割,
分割后字符最后加上sep,n决定分割成切片长度

Fields

1
2
s := "hello word golang"
fmt.Println(strings.Fields(s)) // [hello word golang]

Splits

1
2
3
4
s := "@123@张@AB@001"
sep := "@"
slice1 := strings.Split(s, sep)
fmt.Println(slice1) // [ 123 张 AB 001]

SplitN

将字符串s以sep作为分割符进行分割,分割后字符最后去掉sep,n决定分割成切片长度

1
2
3
n > 0 : 返回的切片最多n个,最后一个子字符串包含未进行切割的部分。
n == 0: 返回nil
n < 0 : 返回所有的子字符串组成的切片
1
2
3
4
s := "a@b@c@d@e"
fmt.Println(strings.SplitN(s, "@", 2)) // [a b@c@d@e]
fmt.Println(strings.SplitN(s, "@", 0)) // []
fmt.Println(strings.SplitN(s, "@", -1)) // [a b c d e]

SplitAfter、SplitAfterN

1
2
fmt.Println(strings.SplitAfter(s, "@"))     // [a@ b@ c@ d@ e]
fmt.Println(strings.SplitAfterN(s, "@", 2)) // [a@ b@c@d@e]

字符串替换

方法名 描述
Replace(s, old, new string, n int) string 返回将s中前n个不重叠old子串都替换为new的新字符串,如果n<0会替换所有old子串。
ReplaceAll(s, old, new string) string 将字符串s中的old子串全部替换为new的新字符串
1
2
3
str := "a@b@c@d@e"
fmt.Println(strings.ReplaceAll(str, "@", "|")) // a|b|c|d|e
fmt.Println(strings.Replace(str, "@", "#", -1)) // a#b#c#d#e