strings.Split 添加额外的换行符
strings.Split adds additional newline
使用 ioutil.ReadFile
读取文件后,我尝试使用 strings.Split
和分隔符 "\n"
拆分我的字节“字符串”,但我收到一个额外的换行符(切片的长度是增加 + 1
).
为什么这和预期的不一样?
// numbers.txt
1
2
3
4
5
func main() {
data, _ := ioutil.ReadFile("numbers.txt")
input := strings.Split(string(data), "\n")
fmt.Println("Len: ", len(input))
for i, v := range input {
fmt.Println(i, v)
}
}
// Output
Len: 6
0 1
1 2
2 3
3 4
4 5
5
预计:
Len: 5
0 1
1 2
2 3
3 4
4 5
可能是 Read text file into string array (and write)
的副本
见评论
Note strings.Split will append one extra line (an empty string) when
parsing regular POSIX text files example – bain Dec 1 '14 at 20:33
strings.Split 不会附加额外的行 - 否则它会在文档中指定。
如果您查看文件如下:
1\n
2\n
3\n
4\n
5\n
您会注意到,如果将字符串按 \n
拆分,则必须有 6 个条目。
1\n2\n3\n4\n5\n<last empty item is here>
使用 ioutil.ReadFile
读取文件后,我尝试使用 strings.Split
和分隔符 "\n"
拆分我的字节“字符串”,但我收到一个额外的换行符(切片的长度是增加 + 1
).
为什么这和预期的不一样?
// numbers.txt
1
2
3
4
5
func main() {
data, _ := ioutil.ReadFile("numbers.txt")
input := strings.Split(string(data), "\n")
fmt.Println("Len: ", len(input))
for i, v := range input {
fmt.Println(i, v)
}
}
// Output
Len: 6
0 1
1 2
2 3
3 4
4 5
5
预计:
Len: 5
0 1
1 2
2 3
3 4
4 5
可能是 Read text file into string array (and write)
的副本
见评论
Note strings.Split will append one extra line (an empty string) when parsing regular POSIX text files example – bain Dec 1 '14 at 20:33
strings.Split 不会附加额外的行 - 否则它会在文档中指定。
如果您查看文件如下:
1\n
2\n
3\n
4\n
5\n
您会注意到,如果将字符串按 \n
拆分,则必须有 6 个条目。
1\n2\n3\n4\n5\n<last empty item is here>