如何将字符串解析为int

Posted

技术标签:

【中文标题】如何将字符串解析为int【英文标题】:How to parse a string into int 【发布时间】:2020-07-18 22:21:06 【问题描述】:

我正在尝试通过 Go 代码执行 git 命令。我需要将*byte.buffer 值字符串转换为int。

cmd := exec.Command("git", "cat-file", "-s", dir+":"filename)
var outBuf bytes.Buffer
var stderr = bytes.Buffer
cmd.Stdout = &out
cmd.Stferr = &stderr
err := cmd.Run()

filesize, _ := strconv.Atoi(out.String())
fmt.Println("filesize..", filesize) //return 0
fmt.Println("filesize..", out.String()) // returns 345

我想将out.String() 值转换为*byte.buffer 类型的字符串。

有人知道怎么做吗?

【问题讨论】:

嘿sngo,看看Atoi错误。也许你得到一个无效的语法错误? 【参考方案1】:
filesize, _ := strconv.Atoi(out.String())

您忽略了错误返回。不要那样做。

如果您打印返回的错误,您将看到git cat-file -s <path> 生成了字符串"345\n"(或者可能是"345\r\n")。也就是说,数字末尾有一个换行符(或 CRLF)。这是禁止的:

filesize = 0, err = strconv.Atoi: parsing "345\n": invalid syntax

删除换行符,strconv.Atoi 就可以使用该值。例如,考虑将strings.TrimSpace() 应用于字符串。 (见Go Playground example)。

【讨论】:

以上是关于如何将字符串解析为int的主要内容,如果未能解决你的问题,请参考以下文章

如果 Int32.TryParse 无法解析字符串,如何将其输出设置为 null? [复制]

Haskell:如何将 IO 输入字符串解析为 Float(或 Int 或其他)?

将字符串解析为 int 数组

如何使用 Dart 将字符串解析为数字?

Java语言中,如何将String转化成Int数组

如何解析像“14px”这样的字符串以在 Swift 中获取 Int 值 14 [重复]