我有一个逗号分隔的字符串,所以可能是
test1, test2, test3
或test1,test2,test3
或test1, test2, test3
。
我在Go中使用strings.Split(s, ",")
将其拆分,但现在我有一个[]string
,其中包含具有任意数量空格的元素。
如何轻松修剪它们?这里的最佳做法是什么?
这是我目前的代码
var property= os.Getenv(env.templateDirectories)
if property != "" {
var dirs = strings.Split(property, ",")
for index,ele := range dirs {
dirs[index] = strings.TrimSpace(ele)
}
return dirs
}
我来自Java,并且假设Go中也有map / reduce等功能,因此问题。
答案 0 :(得分:8)
您可以在循环中使用$sql = "SELECT episode.episode_id,episode.ep_title , series.series_id,
series.title, series.pic FROM episode RIGHT JOIN series ON
episode.series_oid=series.series_id UNION SELECT * FROM movies"
。如果您还想保留顺序,可以使用索引而不是值作为循环参数:
编辑:要查看没有点击的代码:
strings.TrimSpace
答案 1 :(得分:1)
不循环的简便方法
test := "2 , 123, 1"
result := strings.Split(strings.ReplaceAll(test," ","") , ",")
答案 2 :(得分:0)
encoding/csv
包可以处理这个:
package main
import (
"encoding/csv"
"fmt"
"strings"
)
func main() {
for _, each := range []string{
"test1, test2, test3", "test1, test2, test3", "test1,test2,test3",
} {
r := csv.NewReader(strings.NewReader(each))
r.TrimLeadingSpace = true
s, e := r.Read()
if e != nil {
panic(e)
}
fmt.Printf("%q\n", s)
}
}
答案 3 :(得分:0)
如果您已经使用了 regexp
,您可以使用正则表达式进行拆分:
regexp.MustCompile(`\s*,\s*`).Split(test, -1)
此解决方案可能比标准的 Split + TrimSpaces 慢,但更灵活。例如,如果您想跳过空字段,您可以:
regexp.MustCompile(`(\s*,\s*)+`).Split(test, -1)
或使用多个分隔符
regexp.MustCompile(`\s*[,;]\s*`).Split(test, -1)
您可以在 the go playground 中对其进行测试。