web-dev-qa-db-ja.com

行から\ 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...
        }

すべての行に\ nを追加して終了し、プログラムを終了して最後の行でのみ動作させます...

例を挙げてください、私はここで見つけたものが私にとってはうまくいかないという解決策を何でも試してみてください。

13
tseries

最後の文字を切り取ることができます:

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

おそらく、より良いアプローチは文字列ライブラリを使用することです:

read_line = strings.TrimSuffix(read_line, "\n")
32
Alex Lew

ファイルを1行ずつ読み取りたい場合は、 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の2番目の引数として指定された文字と一致する場合、その文字を削除します。

9
putu