【问题标题】:How do I convert string of int slice to int slice?如何将 int slice 的字符串转换为 int slice?
【发布时间】:2016-12-25 02:05:14
【问题描述】:

示例输入:(类型:string

"[156, 100, 713]"

转换示例:(类型:int 的切片)

[156, 100, 713]

【问题讨论】:

标签: string go slice


【解决方案1】:

除了 mhutter 的回答之外,还要注意您的输入 string 看起来像一个 JSON 数组(可能来自 JSON 文本?)。

如果您这样对待它,您可以将其内容解组为 []int 切片。这不会比直接从中解析数字更快(因为encoding/json 包使用反射),但它肯定更简单:

s := "[156, 100, 713]"

var is []int
if err := json.Unmarshal([]byte(s), &is); err != nil {
    panic(err)
}

fmt.Println(is)
fmt.Printf("%#v", is)

输出(在Go Playground上试试):

[156 100 713]
[]int{156, 100, 713}

【讨论】:

    【解决方案2】:

    给定一个字符串

    in := "[156, 100, 713]"
    

    首先,让我们去掉方括号:

    trimmed := strings.Trim(in, "[]")
    //=> "156, 100, 713"
    

    接下来,将字符串拆分为字符串切片:

    strings := strings.Split(trimmed, ", ")
    //=> []string{"156", "100", "713"}
    

    现在我们可以将字符串转换为整数

    ints := make([]int, len(strings))
    
    for i, s := range strings {
        ints[i], _ = strconv.Atoi(s)
    }
    
    fmt.Printf("%#v\n", ints)
    //=> []int{156, 100, 713}
    

    有关更多信息,请参阅 go 文档:https://devdocs.io/go/strings/index

    【讨论】:

      猜你喜欢
      • 2013-04-24
      • 2015-11-12
      • 2018-05-08
      • 1970-01-01
      • 1970-01-01
      • 2022-06-27
      • 1970-01-01
      • 2021-06-13
      相关资源
      最近更新 更多