描述
strings.split函数用于将指定的分隔符切割字符串,并返回切割后的字符串切片。
需要导入 strings包
strings.split(s, sep)
参数 | 说明 | 备注 |
s | 待分割的字符串 | 字符串类型的参数 |
sep | 分隔符 |
字符串类型的参数 |
返回一个字符串切片。
split()函数将字符串根据分隔符切割。切割后返回一个字符串切片,切片len和cap值等于原字符串中存在分隔符的数量 1(仅在s不是空字符串的情况下成立)。
package main
import (
"fmt"
"strings"
)
func main() {
demo := "i&love&go,&and&i&also&love&python."
string_slice := strings.split(demo, "&")
fmt.println("result:",string_slice)
fmt.println("len:",len(string_slice))
fmt.println("cap:", cap(string_slice))
}
运行结果如下:
result: [i love go, and i also love python.]
len: 8
cap: 8
1. 当分隔符不存在于原字符串中时
当分隔符在原字符串中不存在的情况下,split()函数仅仅将原字符串转换成一个len和cap值都为1的字符串切片。
package main
import (
"fmt"
"strings"
)
func main() {
demo := "i love go, and i also love python."
string_slice := strings.split(demo, "&")
fmt.println("result:",string_slice)
fmt.println("len:",len(string_slice))
fmt.println("cap:", cap(string_slice))
}
运行结果如下:
result: [i love go, and i also love python.]
len: 1
cap: 1
2. 当分隔符是空字符串时
当分隔符是空字符串时,split()函数将字符串中的每一个字符分割成一个单独的元素。
package main
import (
"fmt"
"strings"
)
func main() {
demo := "go"
string_slice := strings.split(demo, "")
fmt.println("result:",string_slice)
fmt.println("len:",len(string_slice))
fmt.println("cap:", cap(string_slice))
}
运行结果:
result: [g o]
len: 2
cap: 2
3. 参数都为空字符串
当split()函数的两个参数都是空字符串时(即s和sep都是空字符串),split()函数返回一个len和cap值都为0的空字符串切片。
package main
import (
"fmt"
"strings"
)
func main() {
demo := ""
string_slice := strings.split(demo, "")
fmt.println("result:",string_slice)
fmt.println("len:",len(string_slice))
fmt.println("cap:", cap(string_slice))
}
运行结果:
result: []
len: 0
cap: 0
4. 当s为空字符串,sep不为空字符串时
不同于上一个场景,在这种情况下虽然得到的结果仍然是字符串切片,但是字符串切片的len和cap值是1(而不是像上一个场景中的值是0)。返回的结果是包含一个空字符串的字符串切片。
package main
import (
"fmt"
"strings"
)
func main() {
demo := ""
string_slice := strings.split(demo, "*")
fmt.println("result:",string_slice)
fmt.println("len:",len(string_slice))
fmt.println("cap:", cap(string_slice))
element := string_slice[0]
fmt.printf("string_slice[0]:%s, type:%t, len():%d\n",
element, element, len(element),)
fmt.println("element == \"\"?", element == "")
}
运行结果:
result: []
len: 1
cap: 1
string_slice[0]:, type:string, len():0
element == ""? true