解析Go Command()的问题.Output()

时间:2017-04-01 04:37:15

标签: go

我在exe中使用了第三方工具,在exec.Command的帮助下,该程序将打印出一个大整数值,显然是字符串格式。我无法将该字符串转换为int(或更具体地说是uint64)。

详细说明: (你可以忽略它是什么程序等但是在运行它之后会给我一个大整数)

cmd := exec.Command(app, arg0, arg1, arg3)
stdout, err := cmd.Output()
if err != nil {
    fmt.Println(err.Error())
    return
}
temp := string(stdout)

在我上面运行后,我正在尝试解析它,如下所示

myanswer, err = strconv.Atoi(temp)  //I know this is not for uint64 but I am first trying for int but I actually need uint64 conversion
if err != nil {
    fmt.Println(err)
    return
}

这里的问题是stdout将\ r \ n附加到其输出中,AtoI无法解析并给出错误

strconv.Atoi:解析" 8101832828 \ r \ n":语法无效

有人可以帮我解决如何将此字符串输出转换为uint64以及int格式的问题吗?

1 个答案:

答案 0 :(得分:1)

对于int64you would use

if i, err := strconv.ParseInt(s, 10, 64); err == nil {
    fmt.Printf("i=%d, type: %T\n", i, i)
}

但首先,您需要删除任何换行符 您可以使用strings.TrimSpace作为实例