在Python中如果我这样做......:
parts = "".split(",")
print parts, len(parts)
输出结果为:
[], 0
如果我在Go ...中做相同的事情:
parts = strings.Split("", ",")
fmt.Println(parts, len(parts))
输出是:
[], 1
如果其中没有任何内容,如何长度为1?
答案 0 :(得分:9)
strings.Split
的结果是带有一个元素的切片 - 空字符串。
fmt.Println
只是没有显示它。试试这个例子(注意最后一次打印的更改)。
package main
import "fmt"
import "strings"
func main() {
groups := strings.Split("one,two", ",")
fmt.Println(groups, len(groups))
groups = strings.Split("one", ",")
fmt.Println(groups, len(groups))
groups = strings.Split("", ",")
fmt.Printf("%q, %d\n", groups, len(groups))
}
这是有道理的。如果您想使用"HelloWorld"
字符作为分隔符来拆分字符串,
,那么您希望结果为"HelloWorld"
- 与您的输入相同。
答案 1 :(得分:0)
只有当两个字符串都为空时,您才能得到该结果:
package main
import (
"fmt"
"strings"
)
func main() {
parts := strings.Split("", "")
fmt.Println(parts, len(parts)) // [] 0
}
记录在案的内容:
<块引用>如果 s
和 sep
都为空,Split 返回一个空切片。