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 }