go语言使用strings包来完成对字符串的主要处理操作
1、前缀和后缀
HasPrefix()判断字符串是否以xxx开头
s := "hellogood"
// 判断字符串s是否以hell开头
strings.HasPrefix(s,"hell") //true
HasSuffix()判断字符串s是否以xxx结尾
s := "hellogood"
// 判断字符串s是否以good结尾
strings.HasSuffix(s,"good") //true
2、字符串包含关系
Contains()判断字符串s是否包含xxx
s := "今天是晴天"
strings.Contains(s, "晴天") //true
3、判断子字符串或字符在父字符串中出现的位置(索引)
Index()返回字符串或字符xxx在字符串中的索引(字符第一次出现的索引位置),-1表示不包含字符串
s1 := "hello"
indexS1 := strings.Index(s1, "l") // 字符l在字符串s1中第一次出现的位置索引
fmt.Println(indexS1) // 2
s2 := "world"
indexS2 := strings.Index(s2, "kk") // 字符串“kk”不包含在s2中
fmt.Println(indexS) // 返回-1
LastIndex()返回字符串或字符xxx在字符串中最后出现位置的索引,-1表示不包含字符串
s1 := "today is good"
lastIndexS1 := strings.LastIndex(s1, "o") //o在字符串最后出现的位置的索引
fmt.Println(lastIndexS1) // 11
如果要查询非ASCII 编码的字符在父字符串中的位置,即中文等复杂字符,建议使用以下函数来对字符进行定位
s := "你好吗在干嘛你"
runeIndex := strings.IndexRune(s, '在') //一个汉字3byte
fmt.Println(runeIndex) // 9
4、字符串替换
Replace()用于将字符串中的前n个字符串old 替换为字符串 new,并返回一个新字符串,如果 n = -1 则替换所有字符串 old 为字符串 new
strings.Replace(str, old, new string, n int)
s := "howareyouhowsiihow" //字符串s中一共出现三个how
s2 := strings.Replace(s, "how", "who", 2) // 将前两个how替换为who
fmt.Println(s2) // whoareyouwhosiihow
s := "hello world"
s2 := strings.Replace(s, "l", "k", -1) // 将l全部替换为k
fmt.Println(s2) // hekko workd
5、统计字符串出现的次数
Count()用于计算字符串str在字符串s中出现的非重叠次数
strings.Count(s, str string)
s := "CCIC CCNU GHTYCC"
countS := strings.Count(s,"CC")
fmt.Println(countS) // 3
6、字符串的重复
Repeat()用于重复count次字符串s并返回一个新的字符串
strings.Repeat(s, count int)
s := "who are you"
newS := strings.Repeat(s,3) // 将字符串s重复三次
fmt.Println(newS)
7、修改字符串大小写
ToLower() 将字符串中的 Unicode 字符全部转换为相应的小写字符
s := "Hello GO"
lowerS := strings.ToLower(s)
fmt.Println(lowerS) // hello go
ToUpper() 将字符串中的 Unicode 字符全部转换为相应的大写字符
s := "Hello GO"
upperS := strings.ToUpper(s)
fmt.Println(upperS) // HELLO GO
8、修剪字符串
strings.TrimSpace(s) 用来剔除字符串开头和结尾的空白符号
s := " hello go "
fmt.Println(strings.TrimSpace(s)) // 剔除两边空格
剔除指定字符,使用strings.Trim(s, “xxx”) 来将开头和结尾的 xxx 去除掉
s := "ohello go"
fmt.Println(strings.Trim(s,"o")) // 将字符首尾的o剔除,hello g
strings.TrimLeft()剔除开头字符
s := "hello"
fmt.Println(strings.TrimLeft(s,"h"))
strings.TrimRight()剔除结尾字符
s := "hello "
fmt.Println(strings.TrimRight(s," "))
9、分割字符串
strings.Fields(str) 会利用一个或多个空白符号作为分隔符将字符串分割成若干小块,并返回一个slice,如果字符串只包含空白符号,则返回一个长度为0的slice
s := "Hello Python Hello Go"
FiledS := strings.Fields(s)
fmt.Println(filedS) // [Hello Python Hello Go]
strings.Split(s, sep) 用于自定义分割符号来对指定字符串进行分割,同样返回 slice
s := "Hello*Python*Hello*Go"
splitS := strings.Split(s,"*")
fmt.Println(splitS) // [Hello Python Hello Go]
10、拼接slice到字符串
Join()用于将元素类型为string的slice使用分割符号来拼接组成一个字符串
strings.Join(sl []string, sep string)
sliceStr := []string{"hello","world","go","python"}
newStr := strings.Join(sliceStr,"_") // 用_将切片内容拼接成一个字符串
fmt.Println(newStr) // hello_world_go_python
11、从字符串中读取内容
strings.NewReader(str) 用于生成一个 Reader 并读取字符串中的内容,然后返回指向该 Reader 的指针
str := "Hello go and python"
readStr := strings.NewReader(str)
fmt.Printf("%T\n", readStr) // 获取数据类型 *strings.Reader
fmt.Printf("%v\n", readStr) // 获取数据的值 &{Hello go and python 0 -1}
fmt.Printf("%v\n", readStr) // 获取数据地址 0x14000130000
从其它类型读取内容的函数还有:
- Read() 从 []byte 中读取内容
- ReadByte() 和 ReadRune() 从字符串中读取下一个 byte 或者 rune