Blame view
string_util.go
3.53 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 |
|
3173b06a4 SplitString() |
90 91 92 93 94 95 96 97 98 |
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 |
99 |
// StringAt ... |
dd72ba20d CharAt |
100 101 102 103 104 105 106 |
func StringAt(s string, index int) string { if len(s)-1 < index || index < 0 { return "" } return string(s[index]) } |
a8f0d5a63 SplitText |
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 |
// 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 } |
1c83dc241 GUID and timer |
144 145 146 147 148 149 150 |
func CutTextWithThreeDots(txt string, maxLen int) string { if len(txt) < maxLen || len(txt) <= 3 { return txt } return txt[:maxLen-3] + "..." } |
a8f0d5a63 SplitText |
151 152 153 154 155 156 157 158 159 |
const threeDots = "\u2056\u2056\u2056" func LimitTextWithThreeDots(txt string, maxLen int) string { if len(txt) <= maxLen { return txt } return txt[:maxLen] + threeDots } |
1c83dc241 GUID and timer |
160 161 162 163 164 165 166 |
func LimitMSWordTextWithThreeDots(txt string, maxLen int) string { if len(txt) <= maxLen { return txt } return txt[:maxLen] + "..." } |
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 |
} |