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  }