Странное поведение со строками. TrimSuffix \ n - PullRequest
0 голосов
/ 05 марта 2020

Я пытаюсь удалить \ n из имени файла, прочитанного с клавиатуры, но сгенерированный составной путь странный.

(Go 1.11 на windows)

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")

При вводе AB C и новой строки выводится следующий результат, стирая 1:

Введите имя файла:

AB C

2AB C

Что здесь происходит? Я предполагаю, что мой \ n на самом деле является двухсимвольным CRLF, и TrimSuffix не обрабатывает его правильно. Это проблема?

1 Ответ

1 голос
/ 06 марта 2020

Использование 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")

Детская площадка

...