一、常见用法
strings.split函数是Go语言中常用的字符串分割函数。它可以根据指定的分隔符将一个字符串分割成多个子串,并返回以分隔符分割后得到的子串切片。常见用法如下:
package main import ( "fmt" "strings" ) func main() { str := "hello,world" arr := strings.Split(str, ",") for i := range arr { fmt.Printf("%s\n", arr[i]) } }
上述代码中,我们将字符串"hello,world"按照逗号为分隔符进行分割,并遍历打印得到的子串切片,输出结果为:
hello world
可以看到,strings.split函数简单易用,是处理字符串分割的利器。
二、多个分隔符
除了使用单个分隔符对字符串进行分割以外,strings.split函数还可以同时指定多个分隔符,如下所示:
package main import ( "fmt" "strings" ) func main() { str := "hello|world,you|and|me" arr := strings.Split(str, "|,") for i := range arr { fmt.Printf("%s\n", arr[i]) } }
上述代码中,我们同时指定了"|"和","两个字符作为分隔符,将字符串"hello|world,you|and|me"分割成多个子串,并输出结果为:
hello world you and me
这种方式可以满足一些特殊的分割需求,例如以不同的符号作为分隔符进行分割。
三、分割N次
有时候我们希望只对字符串进行N次分割,strings.split函数也可以实现这一需求。代码如下:
package main import ( "fmt" "strings" ) func main() { str := "hello,world,how,are,you" arr := strings.SplitN(str, ",", 3) for i := range arr { fmt.Printf("%s\n", arr[i]) } }
上述代码中,我们指定了使用逗号作为分隔符,仅对字符串进行了3次分割,输出结果为:
hello world how,are,you
可以看到,只有前两个子串被分割出来了。这样的处理方式可以在一些场景中提高效率。
四、分割空字符串
strings.split函数默认情况下会忽略空字符串,但是有些时候我们却需要对连续的分隔符进行空字符串分割。这时候,只需传入负数即可。代码如下:
package main import ( "fmt" "strings" ) func main() { str := "hello||world|||you" arr := strings.Split(str, "|") for i := range arr { fmt.Printf("%s\n", arr[i]) } }
上述代码中,字符串中出现多个连续的"|"符号,strings.split函数默认会忽略这些空字符串。如果我们需要对这些空字符串进行分割,只需传入负数即可,代码如下:
package main import ( "fmt" "strings" ) func main() { str := "hello||world|||you" arr := strings.Split(str, "|-1") for i := range arr { fmt.Printf("%s\n", arr[i]) } }
输出结果为:
hello world you
五、多重分割
如果我们需要进行多重分割,可以使用递归的方式来解决。代码如下:
package main import ( "fmt" "strings" ) func Split(str string, sep ...string) []string { if len(sep) == 0 { return []string{str} } arr := strings.Split(str, sep[0]) for i := range arr { arr[i] = Split(arr[i], sep[1:]...) } var res []string for i := range arr { res = append(res, arr[i]...) } return res } func main() { str := "hello|world,you|and|me::how-are:you" arr := Split(str, "|", ",", "::", "-") for i := range arr { fmt.Printf("%s\n", arr[i]) } }
可以看到,我们定义了一个Split函数,其中使用了递归的方式进行多重分割,通过传入多个分隔符,可以将字符串分割成多个子串,输出结果为:
hello world you and me how are you
这种方式可以满足一些特殊的分割需求,例如以多个不同的符号作为分隔符进行分割。