字符串异常行为。TrimSuffix\ n

问题描述 投票:-4回答:1

我正在尝试从键盘读取的文件名中删除\ n,但是生成的串联路径很奇怪。

(在Windows上运行1.11)

fmt.Println("Enter file name:")
reader := bufio.NewReader(os.Stdin)

//read line from console
filename, _ := reader.ReadString('\n')
//filename = filename[0 : len(filename)-2] // this one seems to work
filename = strings.TrimSuffix(filename, "\n")
fmt.Println("1" + filename + "2")

输入ABC和换行符将产生以下输出,删除1:

输入文件名:

ABC

2ABC

这里发生了什么?我的猜测是我的\ n实际上是2个字符的CRLF,并且TrimSuffix无法正确处理它。这是问题吗?

go newline stdin
1个回答
0
投票

使用strings.TrimSpace(string) string

fmt.Println("Enter file name:")
reader := bufio.NewReader(os.Stdin)

//read line from console
filename, _ := reader.ReadString('\n')
filename = strings.TrimSpace(filename)
fmt.Println("1" + filename + "2")

Playground

© www.soinside.com 2019 - 2024. All rights reserved.