一、常见用法
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
这种方式可以满足一些特殊的分割需求,例如以多个不同的符号作为分隔符进行分割。
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/190991.html
微信扫一扫
支付宝扫一扫