Blame view
string_util.go
3.92 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" |
6cc94a06e cleanup |
8 9 |
"golang.org/x/exp/utf8string" |
cacf57bd4 merging with /uti... |
10 |
) |
e95e68362 merged string san... |
11 12 13 14 15 16 |
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... |
17 18 19 20 21 22 23 24 |
// 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) |
b80ee4b2b new stuff |
25 26 27 28 29 30 31 32 |
if s == "" { return } parts := strings.Split(s, sep) arr = make([]int64, len(parts)) for i, p := range parts { num := StringToInt64(p) arr[i] = num |
cacf57bd4 merging with /uti... |
33 34 35 36 37 38 39 |
} return arr } // Int64SliceToString ... func Int64SliceToString(arr []int64) (s string) { |
e95e68362 merged string san... |
40 41 42 43 44 45 46 |
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... |
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
} 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 |
74 |
// StringToBool ... |
cacf57bd4 merging with /uti... |
75 |
func StringToBool(s string) bool { |
70f2e7ead simplified |
76 77 |
res, _ := strconv.ParseBool(s) return res |
cacf57bd4 merging with /uti... |
78 |
} |
46b2215eb lintfix |
79 |
// BoolToString ... |
cacf57bd4 merging with /uti... |
80 81 82 |
func BoolToString(b bool) string { return fmt.Sprintf("%b", b) } |
46b2215eb lintfix |
83 |
// StringSliceContains ... |
cacf57bd4 merging with /uti... |
84 85 86 87 88 89 90 91 |
func StringSliceContains(slice []string, s string) bool { for i := range slice { if slice[i] == s { return true } } return false } |
dd72ba20d CharAt |
92 |
|
3173b06a4 SplitString() |
93 94 95 96 97 98 99 100 101 |
func SplitString(s, sep string) (res []string) { parts := strings.Split(s, sep) for _, p := range parts { if p != "" { res = append(res, p) } } return res } |
46b2215eb lintfix |
102 |
// StringAt ... |
dd72ba20d CharAt |
103 104 105 106 107 108 109 |
func StringAt(s string, index int) string { if len(s)-1 < index || index < 0 { return "" } return string(s[index]) } |
6cc94a06e cleanup |
110 111 112 113 114 115 116 117 |
func StringAtRune(s string, index int) string { str := utf8string.NewString(s) max := str.RuneCount() if index < max { return string(str.At(index)) } return "" } |
a8f0d5a63 SplitText |
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 145 146 147 148 149 150 151 152 153 154 |
// 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 } |
6cc94a06e cleanup |
155 156 |
func CutTextWith(txt string, maxLen int, tail string) string { if len(txt) < maxLen || len(txt) <= len(tail) { |
1c83dc241 GUID and timer |
157 158 |
return txt } |
6cc94a06e cleanup |
159 |
return txt[:maxLen-3] + tail |
1c83dc241 GUID and timer |
160 |
} |
6cc94a06e cleanup |
161 |
func LimitTextWith(txt string, maxLen int, tail string) string { |
b80ee4b2b new stuff |
162 163 164 |
if len(txt) <= maxLen { return txt } |
6cc94a06e cleanup |
165 |
return txt[:maxLen] + tail |
b80ee4b2b new stuff |
166 |
} |
46b2215eb lintfix |
167 |
// SplitStringAtWholeWords ... |
e95e68362 merged string san... |
168 169 170 171 |
func SplitStringAtWholeWords(s string, maxLen int) (res []string) { parts := strings.Split(s, " ") res = append(res, parts[0]) |
dd72ba20d CharAt |
172 |
i := 0 |
e95e68362 merged string san... |
173 174 175 176 177 178 179 180 181 182 183 184 185 |
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 |
186 |
} |
e95e68362 merged string san... |
187 188 |
return res |
dd72ba20d CharAt |
189 |
} |
b80ee4b2b new stuff |
190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 |
// StringToInt64 ... func StringToInt64(s string) int64 { i, _ := strconv.ParseInt(s, 10, 64) return i } // StringToFloat64 ... func StringToFloat64(s string) float64 { f, _ := strconv.ParseFloat(s, 64) return f } func StringToValidInt64(s string) (int64, bool) { i, err := strconv.ParseInt(s, 10, 64) if err != nil { return i, false } return i, true } |