3 回答
TA贡献2080条经验 获得超4个赞
您正在寻找SplitAfter。
s := strings.SplitAfter("Potato:Salad:Popcorn:Cheese", ":")
for _, element := range s {
fmt.Println(element)
}
// Potato:
// Salad:
// Popcorn:
// Cheese
TA贡献1712条经验 获得超3个赞
daplho 上面的答案非常简单。有时我只是想提供一种替代方法来消除函数的魔力
package main
import "fmt"
var s = "Potato:Salad:Popcorn:Cheese"
func main() {
a := split(s, ':')
fmt.Println(a)
}
func split(s string, sep rune) []string {
var a []string
var j int
for i, r := range s {
if r == sep {
a = append(a, s[j:i+1])
j = i + 1
}
}
a = append(a, s[j:])
return a
}
https://goplay.space/#h9sDd1gjjZw
作为旁注,标准的 lib 版本比上面的草率版本要好
goos: darwin
goarch: amd64
BenchmarkSplit-4 5000000 339 ns/op
BenchmarkSplitAfter-4 10000000 143 ns/op
所以跟那个大声笑
TA贡献1815条经验 获得超10个赞
试试这个以获得正确的结果。
package main
import (
"fmt"
"strings"
)
func main() {
str := "Potato:Salad:Popcorn:Cheese"
a := strings.SplitAfter(str, ":")
for i := 0; i < len(a); i++ {
fmt.Println(a[i])
}
}
- 3 回答
- 0 关注
- 112 浏览
添加回答
举报