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

时间:2016-08-18 08:19:10

标签: string go slice

示例输入:(类型:string

"[156, 100, 713]"

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

[156, 100, 713]

2 个答案:

答案 0 :(得分:3)

给定一个字符串

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 docs:https://devdocs.io/go/strings/index

答案 1 :(得分:2)

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