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" ""]



如有疑问可咨询: