-
Notifications
You must be signed in to change notification settings - Fork 0
/
strings.go
47 lines (41 loc) · 864 Bytes
/
strings.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
package strings
import (
"strings"
)
func AddPrefix(delimiter rune, leaf string, prefix ...string) string {
var sb strings.Builder
for i, p := range prefix {
if p != "" {
if i > 0 {
sb.WriteRune(delimiter)
}
sb.WriteString(p)
}
}
if sb.Len() > 0 {
sb.WriteRune(delimiter)
}
sb.WriteString(leaf)
return sb.String()
}
func AddPrefixFaster(delimiter rune, leaf string, prefix string) string {
if prefix == "" {
if leaf == "" {
return ""
}
return leaf
}
// return prefix + string(delimiter) + leaf
var sb strings.Builder
sb.Grow(len(prefix) + 1 + len(leaf))
sb.WriteString(prefix)
sb.WriteRune(delimiter)
sb.WriteString(leaf)
return sb.String()
}
func DotPrefix(leaf string, prefix ...string) string {
if len(prefix) == 1 {
return AddPrefixFaster('.', leaf, prefix[0])
}
return AddPrefix('.', leaf, prefix...)
}