如何在 Go 中字符串拆分空字符串

How to string split an empty string in Go

在 Python 如果我这样做...:[=​​14=]

parts = "".split(",")
print parts, len(parts)

输出为:

[], 0

如果我在 Go 中做同样的事情...:[=​​14=]

parts = strings.Split("", ",")        
fmt.Println(parts, len(parts))

输出是:

[], 1

如果里面什么都没有,它的长度怎么会是1?

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))
}

Playground link

这是有道理的。如果您想使用 , 字符作为分隔符来拆分字符串 "HelloWorld",您希望结果为 "HelloWorld" - 与您的输入相同。

只有当两个字符串都为空时才能得到该结果:

package main

import (
   "fmt"
   "strings"
)

func main() {
   parts := strings.Split("", "")
   fmt.Println(parts, len(parts)) // [] 0
}

记录在案:

If both s and sep are empty, Split returns an empty slice.

https://golang.org/pkg/strings#Split