如何从行中删除 \\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 ,结束程序工作,只适用于最后一行……

请举个例子,我会尝试任何我在这里找到的解决方案对我不起作用。

原文由 tseries 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 612
2 个回答

您可以切掉最后一个字符:

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

也许更好的方法是使用字符串库:

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

原文由 Alex Lew 发布,翻译遵循 CC BY-SA 3.0 许可协议

如果您想逐行读取文件,使用 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 的第二个参数给出的任何字符,将删除该字符

原文由 putu 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题