84 lines
1.5 KiB
Go
84 lines
1.5 KiB
Go
package str
|
||
|
||
import (
|
||
"strings"
|
||
)
|
||
|
||
func ParseLines(lines string) []string {
|
||
lines = strings.Replace(lines, "\n\r", "\n", -1)
|
||
lines = strings.Replace(lines, "\r", "\n", -1)
|
||
|
||
rawArr := strings.Fields(lines)
|
||
rawLen := len(rawArr)
|
||
|
||
newArr := make([]string, 0, rawLen)
|
||
set := make(map[string]struct{}, rawLen)
|
||
|
||
for i := 0; i < rawLen; i++ {
|
||
if _, found := set[rawArr[i]]; found {
|
||
continue
|
||
}
|
||
|
||
set[rawArr[i]] = struct{}{}
|
||
newArr = append(newArr, rawArr[i])
|
||
}
|
||
|
||
return newArr
|
||
}
|
||
|
||
func ParseComma(str string) []string {
|
||
str = strings.Replace(str, ",", ",", -1)
|
||
|
||
rawArr := strings.Split(str, ",")
|
||
rawLen := len(rawArr)
|
||
|
||
newArr := make([]string, 0, rawLen)
|
||
set := make(map[string]struct{}, rawLen)
|
||
|
||
for i := 0; i < rawLen; i++ {
|
||
if _, found := set[rawArr[i]]; found {
|
||
continue
|
||
}
|
||
|
||
set[rawArr[i]] = struct{}{}
|
||
newArr = append(newArr, rawArr[i])
|
||
}
|
||
|
||
return newArr
|
||
}
|
||
|
||
func ParseCommaTrim(str string) []string {
|
||
str = strings.Replace(str, ",", ",", -1)
|
||
|
||
rawArr := strings.Split(str, ",")
|
||
rawLen := len(rawArr)
|
||
|
||
newArr := make([]string, 0, rawLen)
|
||
set := make(map[string]struct{}, rawLen)
|
||
|
||
for i := 0; i < rawLen; i++ {
|
||
t := strings.TrimSpace(rawArr[i])
|
||
if t == "" {
|
||
continue
|
||
}
|
||
|
||
if _, found := set[t]; found {
|
||
continue
|
||
}
|
||
|
||
set[rawArr[i]] = struct{}{}
|
||
newArr = append(newArr, rawArr[i])
|
||
}
|
||
|
||
return newArr
|
||
}
|
||
|
||
func MtoL(m map[string]struct{}) []string {
|
||
cnt := len(m)
|
||
lst := make([]string, 0, cnt)
|
||
for v := range m {
|
||
lst = append(lst, v)
|
||
}
|
||
return lst
|
||
}
|