3 回答

TA貢獻2080條經(jīng)驗 獲得超4個贊
您正在尋找SplitAfter。
s := strings.SplitAfter("Potato:Salad:Popcorn:Cheese", ":")
? for _, element := range s {
? fmt.Println(element)
}
// Potato:
// Salad:
// Popcorn:
// Cheese

TA貢獻1712條經(jīng)驗 獲得超3個贊
daplho 上面的答案非常簡單。有時我只是想提供一種替代方法來消除函數(shù)的魔力
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條經(jīng)驗 獲得超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 關注
- 140 瀏覽
添加回答
舉報