`strings.split`可以忽略空标记吗?

dap*_*lho 9 go

你能否展示一种有效的方法来使用strings.split空标记不包含在返回的切片中?

具体来说,以下代码返回["a" "" "b" "c"]我想要返回的位置["a" "b" "c"]:

fmt.Printf("%q\n", strings.Split("a,,b,c", ","))
Run Code Online (Sandbox Code Playgroud)

https://play.golang.org/p/keaSjjSxgn

T. *_*rie 17

简答:strings.Split不能那样做.

但是,在Go中分割字符串的功能还有很多.值得注意的是,你可以做你想做的事strings.FieldsFunc.这里的例子:

splitFn := func(c rune) bool {
        return c == ','
}
fmt.Printf("Fields are: %q\n", strings.FieldsFunc("a,,b,c", splitFn))
Run Code Online (Sandbox Code Playgroud)

在操场上:https://play.golang.org/p/Lp1LsoIxAK

  • 老实说,如果它被命名为`strings.SplitFunc`,那么找到这个函数会更容易.很高兴它帮助你:) (2认同)
  • 有趣的。事实证明,使用“strings.Split”,然后迭代数组并删除空标记,性能提高了约 30%。 (2认同)