为什么在自身上拆分字符串会返回一个长度为2的空片?

时间:2014-07-18 23:50:17

标签: string split go

我正在编写一个程序,我可能最终将字符串拆分为自身。字符串是一个URL,我想在斜杠上拆分。我想根据URL字符串做不同的事情。

我更好奇为什么strings.Split会返回意外切片。我尝试在Python中执行此操作并注意到它还返回一个长度为2的列表。对我来说直观的事情似乎是返回一个空列表(切片/数组)。是否有一个很好的理由可以返回两个空字符串?

package main

import (
    "fmt"
    "strings"
)

func main() {
    fmt.Println(strings.Split("/", "/"))
    fmt.Println("len:", len(strings.Split("/", "/")))
}

// Prints this
[ ]
len: 2

http://play.golang.org/p/-lYrmAKOMR

1 个答案:

答案 0 :(得分:13)

据我了解,split函数返回第一项中/(没什么)之前的所有内容,以及第二项中/之后的所有内容(也没有任何内容)项目。因此,两个空字符串。至于为什么你会得到空字符串,这样split()基本上可以与join相反,如下所述:

Why are empty strings returned in split() results?