:
read_line = read_line[:len(read_line)-1]
おそらく、より良いアプローチは、文字列ライブラリを使用することですがbufio.Scanner
を使用すると簡単になります。スキャナにはendline
(\n
または\r\n
)が含まれません。あなたがendline
を削除したい場合は
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...
}
が、私はつまり、あなたが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")
Internall y、TrimRight
関数呼び出しTrimRightFunc
を返します。そして、それがTrimRight
の2番目の引数として指定された文字と一致する場合、文字を削除します。
ここで質問する方法を理解するには[ヘルプ]をしばらくお待ちください。例えば、十字タグ付けではありません。 – GhostCat
改行は追加されません。改行はファイル内にあります。 [ReadStringのドキュメント](https://golang.org/pkg/bufio/#Reader.ReadString)から、 "ReadStringは入力の最初のdelimが出現するまで読み込み、データを含む文字列を返します。デリミタ。"それは*まさにそれが行うことを*行うことになります。 – Adrian