一、常見用法
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