本文目录


    go 语言中字符串分割

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

    原文地址:https://www.cnblogs.com/yangzhan/p/11564044.html

    文章作者:  BigYoung
    版权声明:  本网站所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 BigYoung !