请您演示一种使用strings.split
的有效方法,以便返回的切片中不包含空标记?
具体来说,以下代码返回["a" "" "b" "c"]
,我想让它返回["a" "b" "c"]
:
fmt.Printf("%q\n", strings.Split("a,,b,c", ","))
答案 0 :(得分:15)
简短回答:strings.Split
不能这样做。
但是,在Go中分割字符串的功能还有很多。值得注意的是,您可以使用strings.FieldsFunc
执行所需操作。这里的例子是:
splitFn := func(c rune) bool {
return c == ','
}
fmt.Printf("Fields are: %q\n", strings.FieldsFunc("a,,b,c", splitFn))
答案 1 :(得分:1)
您可以从数组中过滤掉空元素,这样就可以做到第二步。
package main
import (
"fmt"
"strings"
)
func delete_empty (s []string) []string {
var r []string
for _, str := range s {
if str != "" {
r = append(r, str)
}
}
return r
}
func main() {
var arr = strings.Split("a,,b,c", ",");
fmt.Printf("%q\n", delete_empty(arr));
}
答案 2 :(得分:1)
如果可以使用regexp
,则可以拆分1+分隔符:
package main
import (
"fmt"
"regexp"
)
func main() {
fmt.Printf("%q\n", regexp.MustCompile(",+").Split("a,,b,c", -1))
}