语法
strings.Split(s, substr)
// s: 源字符串
// substr: 被统计的字符串
return int,如:x
几种情况
s := "1,s12,d32,cv4512,v0001,s0d1,vj"
fmt.Println(len(s))
// substr 等于空的情况 = 31
fmt.Println(strings.Count(s, ""))
// 两个参数都是空 = 1
fmt.Println(strings.Count("",""))
// 统计的字符串不存在 = 0
fmt.Println(strings.Count(s, "AA"))
// 统计的字符串存在的情况 = 5
fmt.Println(strings.Count(s, "1"))
// 统计的字符串存在多个字符 = 1
fmt.Println(strings.Count(s, "00"))
结果:
30
31
1
0
5
1
Count 方法源码流程图解析
源码
func Count(s, substr string) int {
// special case
if len(substr) == 0 {
return utf8.RuneCountInString(s) + 1
}
if len(substr) == 1 {
return bytealg.CountString(s, substr[0])
}
n := 0
for {
i := Index(s, substr)
if i == -1 {
return n
}
n++
s = s[i+len(substr):]
}
}
思考
为什么空字符串的时候还会在CountInString后面+1呢?
因为找的是空,可以理解为所有的字母被空分割。