首页 > 解决方案 > Golang 索引一个字符串数组

问题描述

嗨,我有一个字符串说明了这一点。

         "Style: Saison
      
          ABV: 7.7
      
      
       IBU: 20"

我尝试将其拆分为一个数组,以便获得Saison

这是我转换为数组的方法。

    style :=strings.Split(style, "Style:")

当我做
style[0]

它没有索引 Saison。我也尝试了 style[1] 和 style[2],但没有任何反应。我究竟做错了什么?

Style = []string 所以它是一个字符串列表,对吗?

标签: go

解决方案


你可以使用字符串。字段功能

FieldsFunc 在每次运行满足 f(c) 的 Unicode 代码点 c 处拆分字符串 s,并返回 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("%q\n", 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("%.2f\n", abvValue)

    ibuValue, err := strconv.ParseInt(strings.TrimSpace(strFields[5]), 10, 32)
    if err != nil {
        fmt.Println("Error parsing int!")
    }
    fmt.Printf("%d\n", ibuValue)
}

输出:

["Style" " Saison Drink" "ABV" " 7.7" "IBU" " 20"]
Saison Drink
7.70
20


推荐阅读