在Go中分割一个空白string?

给定一个inputstring,如" word1 word2 word3 word4 " ,在Go中将string数组拆分成什么样的最佳方法? 请注意,每个单词之间可以有任意数量的空格或Unicode空格字符。

在Java中,我只是使用someString.trim().split("\\s+")

(注意: 在Go中使用正则expression式可能会出现重复的Splitstring,并不会给出任何高质量的答案。请提供一个实际的例子,而不仅仅是指向正则regexpstrings包引用的链接。

strings包有一个Fields方法。

 someString := "one two three four " words := strings.Fields(someString) fmt.Println(words, len(words)) // [one two three four] 4 

DEMO: http : //play.golang.org/p/et97S90cIH

从文档:

func Fields(s string) []string

字段在一个或多个连续的空白字符的每个实例周围分割strings ,如果s只包含空格,则返回s的子string数组或空列表。

如果您使用提示: regexp.Split

 func (re *Regexp) Split(s string, n int) []string 

将切片s分割成由expression式分隔的子string,并在这些expression式匹配之间返回一个子string切片。

此方法返回的片包含所有不包含在由FindAllString返回的片中的子string。 在不包含元字符的expression式上调用时,它相当于strings.SplitN。

例:

 s := regexp.MustCompile("a*").Split("abaabaccadaaae", 5) // s: ["", "b", "b", "c", "cadaaae"] 

计数确定要返回的子string的数量:

 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 

我想出了以下内容,但这似乎有点过于冗长:

 import "regexp" r := regexp.MustCompile("[^\\s]+") r.FindAllString(" word1 word2 word3 word4 ", -1) 

这将评估为:

 []string{"word1", "word2", "word3", "word4"} 

有一个更紧凑或更习惯的expression?