在Golang中分割一个字符串,你可以使用包中的四个函数中的任何一个 strings包中的任何一个函数:
- [
**strings.Split(s, sep string) []string**] (golang.org/pkg/strings… 通过sep分隔符分割一个s字符串,并返回分隔符的每次出现之间的子字符串的片断。输出的子串不包括分隔符。 **strings.SplitN(s, sep string, n int) []string**- 与strings.Split()具有相同的效果,但是通过n参数可以指定输出片断应包含的最大子串数量。**strings.SplitAfter(s, sep string) []string**- 通过sep分隔符分割一个s字符串,并在每次出现分隔符后返回一个被分割的子字符串片断。输出的子串包括分隔符。**strings.SplitAfterN(s, sep string, n int) []string**- 与strings.SplitAfter()具有相同的效果,但是通过n参数,你可以指定输出片断应该包含的最大子串数量。
请看例子来比较这四种分割字符串的方法:
package main
import (
"fmt"
"strings"
)
func main() {
str := "strawberry, blueberry, raspberry"
fmt.Println("strings.Split():")
for _, s := range strings.Split(str, ", ") {
fmt.Printf("- %s\n", s)
}
fmt.Printf("\nstrings.SplitN()\n")
for _, s := range strings.SplitN(str, ", ", 2) {
fmt.Printf("- %s\n", s)
}
fmt.Printf("\nstrings.SplitAfter()\n")
for _, s := range strings.SplitAfter(str, ", ") {
fmt.Printf("- %s\n", s)
}
fmt.Printf("\nstrings.SplitAfterN()\n")
for _, s := range strings.SplitAfterN(str, ", ", 2) {
fmt.Printf("- %s\n", s)
}
}
输出
strings.Split():
- strawberry
- blueberry
- raspberry
strings.SplitN()
- strawberry
- blueberry, raspberry
strings.SplitAfter()
- strawberry,
- blueberry,
- raspberry
strings.SplitAfterN()
- strawberry,
- blueberry, raspberry