-
Notifications
You must be signed in to change notification settings - Fork 0
/
text_tools.go
71 lines (51 loc) · 1.24 KB
/
text_tools.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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
package mttools
import (
"regexp"
"strings"
lorem "github.com/drhodes/golorem"
)
// Generate random word
func RandomWord(minLength, maxLength int, capitalize bool) string {
word := lorem.Word(minLength, maxLength)
if capitalize {
word = strings.Title(word)
}
return word
}
// Generate sentence of random words
func RandomWords(count, minLength, maxLength int, capitalize bool) string {
if count < 1 {
panic("Count should be larger than 0")
}
result := ""
for count > 0 {
count--
word := lorem.Word(minLength, maxLength)
if capitalize {
word = strings.Title(word)
}
result = result + word
if count > 0 {
result = result + " "
}
}
return result
}
// Splits string into array of strings.
// Each argument in string is single word or number, or string in double quotes.
func SplitArgumentsString(str string) []string {
str = strings.TrimSpace(str)
// \p{L} = any unicode letter
re := regexp.MustCompile(`([\p{L}\d_\-\+\@\|\!\/]+)|(".*?[^\\]")|("")`)
result := re.FindAllString(str, -1) //-1 = all
// remove double quotes
for index, item := range result {
if len(item) > 0 && item[0] == '"' {
item = item[1 : len(item)-1]
result[index] = item
}
}
//DBG
//fmt.Printf("%+v\n", result)
return result
}