Golang中如何将字符串转换为整数并保留前导零
Golang中如何将字符串转换为整数并保留前导零 我正在解析Excel文件,其中有一个邮政编码的字符串列,我想将其转换为整数。例如,我有字段"17845"和"04745",期望的输出是17845和04745,但当我使用strconv.ParseInt时,输出却变成了17845和4745。
func main() {
fmt.Println("hello world")
}
2 回复
在Go语言中,整数类型(如int、int64)本身不存储前导零,因为前导零在数值上没有意义。当您使用strconv.ParseInt将字符串转换为整数时,前导零会被自动去除,这是符合数学规范的。
如果您需要保留前导零,建议将数据保持为字符串类型,或者在需要显示时格式化输出。以下是一个示例,展示如何解析字符串并保留前导零的显示:
package main
import (
"fmt"
"strconv"
)
func main() {
// 示例字符串数据
zipCodes := []string{"17845", "04745"}
for _, zipStr := range zipCodes {
// 将字符串转换为整数(前导零会被去除)
zipInt, err := strconv.ParseInt(zipStr, 10, 64)
if err != nil {
fmt.Printf("Error parsing %s: %v\n", zipStr, err)
continue
}
// 如果需要保留前导零,可以格式化为固定长度的字符串
// 假设邮政编码长度为5位
formattedZip := fmt.Sprintf("%05d", zipInt)
fmt.Printf("Original: %s, Parsed: %d, Formatted: %s\n", zipStr, zipInt, formattedZip)
}
}
输出:
Original: 17845, Parsed: 17845, Formatted: 17845
Original: 04745, Parsed: 4745, Formatted: 04745
如果您需要存储邮政编码,建议直接使用字符串类型,以避免丢失前导零:
package main
import (
"fmt"
)
func main() {
// 直接使用字符串存储邮政编码
zipCodes := []string{"17845", "04745"}
for _, zip := range zipCodes {
fmt.Printf("Zip code: %s\n", zip)
}
}
输出:
Zip code: 17845
Zip code: 04745
如果您从Excel解析数据,建议在读取阶段就保持为字符串格式,而不是转换为整数。


