在 Go 中用空格拆分字符串?

新手上路,请多包涵

给定一个输入字符串,例如 " word1 word2 word3 word4 " ,在 Go 中将其拆分为字符串数组的最佳方法是什么?请注意,每个单词之间可以有 任意 数量的空格或 unicode 间距字符。

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

(注意: 在 Go 中使用正则表达式可能重复的 Split 字符串 不会给出任何高质量的答案。请提供一个实际示例,而不仅仅是指向 regexpstrings 包参考的链接.)

原文由 ralfoide 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.3k
2 个回答

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

从文档:

Fields 围绕一个或多个连续空白字符的每个实例拆分字符串 s,如 unicode.IsSpace 所定义,返回 s 的子字符串切片或如果 s 仅包含空白则返回空切片。

原文由 I Hate Lazy 发布,翻译遵循 CC BY-SA 4.0 许可协议

如果您使用提示: 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

原文由 zzzz 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题