-
Notifications
You must be signed in to change notification settings - Fork 0
/
number.go
156 lines (147 loc) · 3.79 KB
/
number.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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
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
145
146
147
148
149
150
151
152
153
154
155
156
package utils
import (
"fmt"
"math"
"math/rand"
"regexp"
"strconv"
"strings"
"time"
)
//创建数字字符串(不足前面补0)
//CreateNumberStr(4,0) return 0001
//CreateNumberStr(5,1) return 00002
func CreateNumberStr(figures int, startNumber int) (string) {
numberStr := strconv.Itoa(startNumber + 1)
for (true) {
if len(strconv.Itoa(startNumber)) < figures {
numberStr = "0" + numberStr
}
if len(numberStr) >= figures {
break
}
}
return numberStr
}
//创建多位数长度数字字符串
//figures位数
//rang随机数范围
func CreateRandNum(figures int, rang int) (numberStr string) {
rand.Seed(time.Now().Unix())
for (true) {
rnd := rand.Intn(rang)
numberStr += strconv.Itoa(rnd)
if len(numberStr) >= figures {
break
}
}
return
}
//Float64转string
func GetFloatToString(f float64) string {
return strconv.FormatFloat(f, 'f', -1, 64)
}
func TrimHtml(src string) string {
//清除转换符
src = strings.Replace(src, " ", "", -1)
src = strings.Replace(src, "”", "", -1)
src = strings.Replace(src, "“", "", -1)
src = strings.Replace(src, "—", "", -1)
//将HTML标签全转换成小写
re, _ := regexp.Compile("\\<[\\S\\s]+?\\>")
src = re.ReplaceAllStringFunc(src, strings.ToLower)
//去除STYLE
re, _ = regexp.Compile("\\<style[\\S\\s]+?\\</style\\>")
src = re.ReplaceAllString(src, "")
//去除SCRIPT
re, _ = regexp.Compile("\\<script[\\S\\s]+?\\</script\\>")
src = re.ReplaceAllString(src, "")
//去除所有尖括号内的HTML代码,并换成换行符
re, _ = regexp.Compile("\\<[\\S\\s]+?\\>")
src = re.ReplaceAllString(src, "<zzy>")
//去除&ldquo
////去除连续的换行符
re, _ = regexp.Compile("\\s{2,}")
src = re.ReplaceAllString(src, "<zzy>")
return strings.TrimSpace(src)
}
//去除字符串中的样式
func TrimHtml2(src string) string {
//清除转换符
src = strings.Replace(src, " ", "", -1)
src = strings.Replace(src, "”", "", -1)
src = strings.Replace(src, "“", "", -1)
src = strings.Replace(src, "—", "", -1)
//将HTML标签全转换成小写
re, _ := regexp.Compile("\\<[\\S\\s]+?\\>")
src = re.ReplaceAllStringFunc(src, strings.ToLower)
//去除STYLE
re, _ = regexp.Compile("\\<style[\\S\\s]+?\\</style\\>")
src = re.ReplaceAllString(src, "")
//去除SCRIPT
re, _ = regexp.Compile("\\<script[\\S\\s]+?\\</script\\>")
src = re.ReplaceAllString(src, "")
//去除所有尖括号内的HTML代码,并换成换行符
re, _ = regexp.Compile("\\<[\\S\\s]+?\\>")
src = re.ReplaceAllString(src, "\n")
//去除&ldquo
////去除连续的换行符
re, _ = regexp.Compile("\\s{2,}")
src = re.ReplaceAllString(src, "\n")
return strings.TrimSpace(src)
}
func RemoveRep(s []uint) []uint {
start := time.Now()
result := []uint{}
m := make(map[uint]bool) //map的值不重要
for _, v := range s {
if _, ok := m[v]; !ok {
result = append(result, v)
m[v] = true
}
}
fmt.Println("花费时间:", fmt.Sprintf("%vms", (time.Now().UnixNano()-start.UnixNano())/1e+6))
return result
}
//float64转int四舍五入
func Round(x float64) int {
return int(math.Floor(x + 0.5))
}
//截取字符串 start 起点下标 length 需要截取的长度
func Substr(str string, start int, length int) string {
rs := []rune(str)
rl := len(rs)
end := 0
if start < 0 {
start = rl - 1 + start
}
end = start + length
if start > end {
start, end = end, start
}
if start < 0 {
start = 0
}
if start > rl {
start = rl
}
if end < 0 {
end = 0
}
if end > rl {
end = rl
}
return string(rs[start:end])
}
//截取字符串 start 起点下标 end 终点下标(不包括)
func Substr2(str string, start int, end int) string {
rs := []rune(str)
length := len(rs)
if start < 0 || start > length {
panic("start is wrong")
}
if end < 0 || end > length {
panic("end is wrong")
}
return string(rs[start:end])
}