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

时间:2015-02-04 20:33:49

标签: arrays string go

在Python中如果我这样做......:

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

输出结果为:

[], 0

如果我在Go ...中做相同的事情:

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

输出是:

[], 1

如果其中没有任何内容,如何长度为1?

2 个答案:

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

Playground link

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

答案 1 :(得分:0)

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

package main

import (
   "fmt"
   "strings"
)

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

记录在案的内容:

<块引用>

如果 ssep 都为空,Split 返回一个空切片。

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