猿问

有没有像 linux cut 一样工作的 Go 函数?

这可能是一个非常基本的问题,但在查看 strings 包文档后我无法找到答案。

基本上,我想做的就是相当于:

echo "hello world" | cut -d" " -f2


沧海一幻觉
浏览 102回答 2
2回答

开心每一天1111

echo "hello world" | cut -d" " -f2这"hello world"使用空格作为分隔符来分割字符串,并仅选择第二部分(1 索引)。在 Go 中,它strings.Split()会返回一个切片,您可以根据需要对其进行索引或切片。s := "hello world" fmt.Println(strings.Split(s, " ")[1])这输出相同。在Go Playground上尝试一下。如果输入不能保证有 2 个部分,则上述索引 ( [1]) 可能会出现混乱。在此之前检查切片的长度。

叮当猫咪

有一个strings.Split()函数可以在指定的子字符串处分割字符串。还有函数Fields(s string) []string, 和FieldsFunc(s string, f func(rune) bool) []string。前者以空格分割字符串,后者使用给定的函数来确定是否必须分割字符串。Split和的区别Fields在于Fields将多个连续的空格视为一个分割位置。strings.Fields("  foo bar  baz   "))产量["foo" "bar" "baz"], 和strings.Split("  foo bar  baz   ", " ")产量["" "" "foo" "bar" "" "baz" "" "" ""].
随时随地看视频慕课网APP

相关分类

Go
我要回答