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