如何将字符串解析为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? [复制]