Answers:
所述strings
封装具有一个Fields
方法。
someString := "one two three four "
words := strings.Fields(someString)
fmt.Println(words, len(words)) // [one two three four] 4
演示: http : //play.golang.org/p/et97S90cIH
从文档:
func Fields(s string) []string
字段在
s
一个或多个连续的空白字符的每个实例周围拆分字符串,s
如果s仅包含空格,则返回的子字符串数组或一个空列表。
shlex
该文件godoc.org/github.com/google/shlex
如果您使用技巧:regexp.Split
func (re *Regexp) Split(s string, n int) []string
将片段s分割成由表达式分隔的子字符串,并返回这些表达式匹配之间的子字符串的片段。
此方法返回的片由未包含在FindAllString返回的片中的s的所有子字符串组成。在不包含元字符的表达式上调用时,它等效于strings.SplitN。
例:
s := regexp.MustCompile("a*").Split("abaabaccadaaae", 5)
// s: ["", "b", "b", "c", "cadaaae"]
该计数确定要返回的子字符串数:
n > 0: at most n substrings; the last substring will be the unsplit remainder.
n == 0: the result is nil (zero substrings)
n < 0: all substrings
Fields()
不会返回空字符串。因此,返回的字段数将有所不同。如果您尝试解析一致的内容,那么它将对您不起作用。如果FieldsFunc()
也无法使用,则可能需要使用正则表达式。
strings.Fields
不要忽略引用部分中的空格。