如何在 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))
}
这是有道理的。如果您想使用 ,
字符作为分隔符来拆分字符串 "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.
在 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))
}
这是有道理的。如果您想使用 ,
字符作为分隔符来拆分字符串 "HelloWorld"
,您希望结果为 "HelloWorld"
- 与您的输入相同。
只有当两个字符串都为空时才能得到该结果:
package main
import (
"fmt"
"strings"
)
func main() {
parts := strings.Split("", "")
fmt.Println(parts, len(parts)) // [] 0
}
记录在案:
If both
s
andsep
are empty, Split returns an empty slice.