mirror of
https://github.com/wonli/aqi.git
synced 2024-06-28 09:57:05 +08:00
49 lines
801 B
Go
49 lines
801 B
Go
package utils
|
|
|
|
import (
|
|
"strconv"
|
|
"strings"
|
|
)
|
|
|
|
func StringToIntSlice(str string) []uint {
|
|
parts := strings.Split(str, ",")
|
|
seen := make(map[uint]bool)
|
|
nums := make([]uint, 0, len(parts))
|
|
for _, part := range parts {
|
|
part = strings.TrimSpace(part)
|
|
if part == "" {
|
|
continue
|
|
}
|
|
|
|
num, err := strconv.Atoi(part)
|
|
if err != nil {
|
|
continue
|
|
}
|
|
|
|
uNum := uint(num)
|
|
if !seen[uNum] {
|
|
nums = append(nums, uNum)
|
|
seen[uNum] = true
|
|
}
|
|
}
|
|
|
|
return nums
|
|
}
|
|
|
|
func IntSliceToString(nums ...uint) string {
|
|
var strBuilder strings.Builder
|
|
seen := make(map[uint]bool)
|
|
for i, num := range nums {
|
|
if seen[num] {
|
|
continue
|
|
}
|
|
|
|
if i > 0 {
|
|
strBuilder.WriteString(",")
|
|
}
|
|
strBuilder.WriteString(strconv.FormatUint(uint64(num), 10))
|
|
seen[num] = true
|
|
}
|
|
return strBuilder.String()
|
|
}
|