登录
首页 >  Golang >  Go问答

使用 Go 在字符串数组中进行索引

来源:stackoverflow

时间:2024-03-01 20:15:22 250浏览 收藏

本篇文章主要是结合我之前面试的各种经历和实战开发中遇到的问题解决经验整理的,希望这篇《使用 Go 在字符串数组中进行索引》对你有很大帮助!欢迎收藏,分享给更多的需要的朋友学习~

问题内容

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

"style: saison
      
          abv: 7.7
      
      
       ibu: 20"

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

这是我如何转换为数组。

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

当我这样做的时候

style[0]

它不会索引 saison。我也尝试了 style[1] 和 style[2] 但没有任何反应。我做错了什么?

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


解决方案


您可以使用 strings.FieldsFunc

fieldsfunc 在每次运行 unicode 代码点 c 时分割字符串 s 满足 f(c) 并返回 s 的切片数组。如果所有代码 s 中的点满足 f(c) 或字符串为空,则为空切片 返回。

fieldsfunc 不保证调用 f(c) 的顺序 并假设对于给定的 c,f 始终返回相同的值。

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

今天带大家了解了的相关知识,希望对你有所帮助;关于Golang的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>