嗨,我有一个字符串,上面写着这句话。
"Style: Saison
ABV: 7.7
IBU: 20"
我试着把它分成一个数组,这样我就可以得到Saison
以下是我如何转换为数组。
style :=strings.Split(style, "Style:")
当我执行style[0]
时
它没有索引Saison。我还尝试了样式[1]和样式[2],但都没有成功。我做错了什么?
Style=[]字符串,所以它是一个字符串列表,对吗?
您可以使用字符串字段Func:
FieldsFunc在每次运行Unicode代码点c时拆分字符串s满足f(c(并返回s的切片数组。如果所有代码s中的点满足f(c(或字符串为空,空切片为返回。
FieldsFunc不保证它调用f(c(的顺序并且假设f对于给定的c.总是返回相同的值
package main
import (
"fmt"
"strconv"
"strings"
)
func main() {
str := `Style: Saison Drink
ABV: 7.7
IBU: 20`
f := func(c rune) bool {
return c == ':' || c == 'n'
}
strFields := strings.FieldsFunc(str, f)
fmt.Printf("%qn", strFields)
styleValue := strings.TrimSpace(strFields[1])
fmt.Println(styleValue)
abvValue, err := strconv.ParseFloat(strings.TrimSpace(strFields[3]), 32)
if err != nil {
fmt.Println("Error parsing float!")
}
fmt.Printf("%.2fn", abvValue)
ibuValue, err := strconv.ParseInt(strings.TrimSpace(strFields[5]), 10, 32)
if err != nil {
fmt.Println("Error parsing int!")
}
fmt.Printf("%dn", ibuValue)
}
输出:
["Style" " Saison Drink" "ABV" " 7.7" "IBU" " 20"]
Saison Drink
7.70
20