go語言中字符串的分割分以下幾種:
1、根據空格鍵進行分割
方法:strings.Fields(s string) []string
s:要分割的字符串
返回結果為[]string
例: s:=" ab cd ef gh ij kl "
arr:=strings.Fields(s)
fmt.Printf("arr:%q\n",arr)
結果為:arr:["ab" "cd" "ef" "gh" "ij" "kl"]
注: 1、分割結果是不包含空字符串的,比如ab前面有一個空格,kl后面也有一個空格,但是分割的結果為 :["ab" "cd" "ef" "gh" "ij" "kl"],而並非: ["" "ab" "cd" "ef" "gh" "ij" "kl" ""]。分割長度為6,而並非是8
2、如果要分割的字符串有多個連續空格出現的話也會,並不會進行多次分割,例如上例中cd和ef之間出現了多個連續空格,結果為: ["ab" "cd" "ef" "gh" "ij" "kl"],而並非:["ab" "cd" "" "" "" "" "ef" "gh" "ij" "kl"]
2、根據某個字符串對另一個字符串進行分割
方法:strings.Split(s,sep string) []string
s:要分割的字符串
sep:要去掉的字符串
返回結果為[]string
例: s:="iiaiibiiciiiidiiii"
sep:="ii"
arr:=strings.Split(s,sep)
fmt.Println("arr:",arr)
結果為:arr:["" "a" "b" "c" "" "d" "" ""]
注:當sep=""時,會根據""進行分割,即結果為:arr:["i" "i" "a" "i" "i" "b" "i" "i" "c" "i" "i" "i" "i" "d" "i" "i" "i" "i"]
3、根據單個字符進行分割
方法:strings.FieldsFunc(s string,f func(rune) bool) []string
s:要分割的字符串
f:自定義的分割規則函數,返回類型為bool類型
返回結果為[]string
例:
f := func(c rune) bool {
if c == '*' || c == '@'||c=='f'||c==' '||c=='二' {
return true
} else {
return false
}
}
s := "@a*b@@c**d## e$f二%ag*"
result := strings.FieldsFunc(s, f)
fmt.Printf("result:%q", result)
結果為:result:["a" "b" "c" "d##" "e$" "%ag"]
注: 1、當連續出現多個符合條件的字符時當次分割只會進行一次,例如s="a**b"或s="a*#b",根據條件c=='*'或c=='*'||c=='#'進行分割時,結果為["a" "b"],而非["a" "" "b"]
2、當要分割的字符出現在s的首或者尾的時候可以忽略,例如s="*a*b*",根據條件c=='*'分割,結果為["a" "b"],而非["" "a" "b" ""]