Подтвердить что ты не робот

Как удалить \n из строк

file, _ := os.Open("x.txt")
    f := bufio.NewReader(file)

    for {
        read_line, _ := ReadString('\n')
        fmt.Print(read_line)


        // other code what work with parsed line...
        }

end it add\n на каждой строке, конечная программа на работу, работайте только с последней строкой...

Пожалуйста, приложите пример, я попробую что-нибудь прекратить любое решение, что я нахожу здесь, не работает для меня.

4b9b3361

Ответ 1

Вы можете отрезать последний символ:

read_line = read_line[:len(read_line)-1]

Возможно, лучший подход заключается в использовании библиотеки строк:

read_line = strings.TrimSuffix(read_line, "\n")

Ответ 2

Если вы хотите читать файл построчно, использовать bufio.Scanner будет проще. Сканер не включает в строку endline (\n или \r\n).

file, err := os.Open("yourfile.txt")
if err != nil {
    //handle error
    return
}
defer file.Close()

s := bufio.NewScanner(file)
for s.Scan() {
    read_line := s.Text()

    // other code what work with parsed line...
}

Если вы хотите удалить endline, я предлагаю вам использовать TrimRightFunc, т.е.

read_line = strings.TrimRightFunc(read_line, func(c rune) bool {
    //In windows newline is \r\n
    return c == '\r' || c == '\n'
})

Обновление:
Как указывает @GwynethLlewelyn, использование TrimRight будет проще (чище), т.е.

 read_line = strings.TrimRight(read_line, "\r\n")

Внутренне, функция TrimRight вызывает TrimRightFunc и удаляет символ, если он соответствует любому символу, указанному в качестве второго аргумента TrimRight.