github.com/bingoohuang/gg@v0.0.0-20240325092523-45da7dee9335/pkg/ss/split.go (about) 1 package ss 2 3 import "strings" 4 5 // Split1 将s按分隔符sep分成x份,取第1份 6 func Split1(s string, options ...SplitOption) (s0 string) { 7 s0, _, _, _, _ = Split5(s, options...) 8 return 9 } 10 11 // Split2 将s按分隔符sep分成x份,取第1、2份 12 func Split2(s string, options ...SplitOption) (s0, s1 string) { 13 s0, s1, _, _, _ = Split5(s, options...) 14 return 15 } 16 17 // Split3 将s按分隔符sep分成x份,取第1、2、3份 18 func Split3(s string, options ...SplitOption) (s0, s1, s2 string) { 19 s0, s1, s2, _, _ = Split5(s, options...) 20 return 21 } 22 23 // Split4 将s按分隔符sep分成x份,取第x份,取第1、2、3、4份 24 func Split4(s string, options ...SplitOption) (s0, s1, s2, s3 string) { 25 s0, s1, s2, s3, _ = Split5(s, options...) 26 return 27 } 28 29 // Split5 将s按分隔符sep分成x份,取第x份,取第1、2、3、4、5份 30 func Split5(s string, options ...SplitOption) (s0, s1, s2, s3, s4 string) { 31 parts := Split(s, options...) 32 l := len(parts) 33 34 if l > 0 { 35 s0 = strings.TrimSpace(parts[0]) 36 } 37 if l > 1 { 38 s1 = strings.TrimSpace(parts[1]) 39 } 40 if l > 2 { 41 s2 = strings.TrimSpace(parts[2]) 42 } 43 if l > 3 { 44 s3 = strings.TrimSpace(parts[3]) 45 } 46 if l > 4 { 47 s4 = strings.TrimSpace(parts[4]) 48 } 49 return 50 } 51 52 // SplitToMap 将字符串s分割成map,其中key和value之间的间隔符是kvSep, kv和kv之间的分隔符是kkSep 53 func SplitToMap(s string, kvSep, kkSep string) map[string]string { 54 var m map[string]string 55 56 ss := strings.Split(s, kkSep) 57 m = make(map[string]string) 58 59 for _, pair := range ss { 60 p := strings.TrimSpace(pair) 61 if p == "" { 62 continue 63 } 64 65 k, v := Split2(p, WithSeps(kvSep), WithIgnoreEmpty(false)) 66 m[k] = v 67 } 68 69 return m 70 }