如何将 int 切片的字符串转换为 int 切片?

How do I convert string of int slice to int slice?

示例输入:(类型:string

"[156, 100, 713]"

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

[156, 100, 713]

给定一个字符串

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

除了 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}