Blame view
string_util.go
3.08 KB
18fcd6d6b merged with util ... |
1 |
package webutility |
cacf57bd4 merging with /uti... |
2 3 4 |
import ( "fmt" |
70f2e7ead simplified |
5 |
"strconv" |
cacf57bd4 merging with /uti... |
6 |
"strings" |
a8f0d5a63 SplitText |
7 |
"unicode" |
cacf57bd4 merging with /uti... |
8 |
) |
e95e68362 merged string san... |
9 10 11 12 13 14 |
const sanitisationPatern = "\"';&*<>=\\`:" // SanitiseString removes characters from s found in patern and returns new modified string. func SanitiseString(s string) string { return ReplaceAny(s, sanitisationPatern, "") } |
cacf57bd4 merging with /uti... |
15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
// IsWrappedWith ... func IsWrappedWith(src, begin, end string) bool { return strings.HasPrefix(src, begin) && strings.HasSuffix(src, end) } // ParseInt64Arr ... func ParseInt64Arr(s, sep string) (arr []int64) { s = strings.TrimSpace(s) if s != "" { parts := strings.Split(s, sep) arr = make([]int64, len(parts)) for i, p := range parts { num := StringToInt64(p) arr[i] = num } } return arr } // Int64SliceToString ... func Int64SliceToString(arr []int64) (s string) { |
e95e68362 merged string san... |
37 38 39 40 41 42 43 |
if len(arr) == 0 { return "" } s += fmt.Sprintf("%d", arr[0]) for i := 1; i < len(arr); i++ { s += fmt.Sprintf(",%d", arr[i]) |
cacf57bd4 merging with /uti... |
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
} return s } // CombineStrings ... func CombineStrings(s1, s2, s3 string) string { s1 = strings.TrimSpace(s1) s2 = strings.TrimSpace(s2) if s1 != "" && s2 != "" { s1 += s3 + s2 } else { s1 += s2 } return s1 } // ReplaceAny replaces any of the characters from patern found in s with r and returns a new resulting string. func ReplaceAny(s, patern, r string) (n string) { n = s for _, c := range patern { n = strings.Replace(n, string(c), r, -1) } return n } |
46b2215eb lintfix |
71 |
// StringToBool ... |
cacf57bd4 merging with /uti... |
72 |
func StringToBool(s string) bool { |
70f2e7ead simplified |
73 74 |
res, _ := strconv.ParseBool(s) return res |
cacf57bd4 merging with /uti... |
75 |
} |
46b2215eb lintfix |
76 |
// BoolToString ... |
cacf57bd4 merging with /uti... |
77 78 79 |
func BoolToString(b bool) string { return fmt.Sprintf("%b", b) } |
46b2215eb lintfix |
80 |
// StringSliceContains ... |
cacf57bd4 merging with /uti... |
81 82 83 84 85 86 87 88 |
func StringSliceContains(slice []string, s string) bool { for i := range slice { if slice[i] == s { return true } } return false } |
dd72ba20d CharAt |
89 |
|
46b2215eb lintfix |
90 |
// StringAt ... |
dd72ba20d CharAt |
91 92 93 94 95 96 97 |
func StringAt(s string, index int) string { if len(s)-1 < index || index < 0 { return "" } return string(s[index]) } |
a8f0d5a63 SplitText |
98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 |
// SplitText ... func SplitText(s string, maxLen int) (lines []string) { runes := []rune(s) i, start, sep, l := 0, 0, 0, 0 for i = 0; i < len(runes); i++ { c := runes[i] if unicode.IsSpace(c) { sep = i } if c == ' ' { if start != sep { lines = append(lines, string(runes[start:sep])) } start = i sep = i l = 0 } else if l >= maxLen { if start != sep { lines = append(lines, string(runes[start:sep])) sep = i start = i - 1 l = 0 } } else { l++ } } if start != i-1 { lines = append(lines, string(runes[start:i-1])) } return lines } const threeDots = "\u2056\u2056\u2056" func LimitTextWithThreeDots(txt string, maxLen int) string { if len(txt) <= maxLen { return txt } return txt[:maxLen] + threeDots } |
46b2215eb lintfix |
145 |
// SplitStringAtWholeWords ... |
e95e68362 merged string san... |
146 147 148 149 |
func SplitStringAtWholeWords(s string, maxLen int) (res []string) { parts := strings.Split(s, " ") res = append(res, parts[0]) |
dd72ba20d CharAt |
150 |
i := 0 |
e95e68362 merged string san... |
151 152 153 154 155 156 157 158 159 160 161 162 163 |
for j := 1; j < len(parts); j++ { p := strings.TrimSpace(parts[j]) if len(p) > maxLen { // TODO(marko): check if maxLen is >= 3 p = p[0 : maxLen-3] p += "..." } if len(res[i])+len(p)+1 <= maxLen { res[i] += " " + p } else { res = append(res, p) i++ } |
dd72ba20d CharAt |
164 |
} |
e95e68362 merged string san... |
165 166 |
return res |
dd72ba20d CharAt |
167 |
} |