一、常見用法
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/zh-hk/n/190991.html
微信掃一掃
支付寶掃一掃