登录
首页 >  Golang >  Go问答

如果没有换行符,如何从 reader.ReadString 获取最后一行

来源:stackoverflow

时间:2024-04-07 14:48:35 233浏览 收藏

亲爱的编程学习爱好者,如果你点开了这篇文章,说明你对《如果没有换行符,如何从 reader.ReadString 获取最后一行》很感兴趣。本篇文章就来给大家详细解析一下,主要介绍一下,希望所有认真读完的童鞋们,都有实质性的提高。

问题内容

我一直在用 Go 编写这个 Php 解析器,但我似乎遇到了一个小问题,那就是有时最后一行没有添加到我正在编写的新文件中。

基本上,我会检查原始 Php 文件,进行一些混淆,然后将这些混淆的行写入新文件。

问题是,有时我会遇到一个末尾没有换行符的文件,并且我假设 line, err := reader.ReadString('\n') 如果有的话将不会读取字符串末尾没有分隔符?

是否有一个简单的解决方案,不涉及使用扫描仪,因为很多解析代码依赖于解释换行符......


解决方案


问题已解决,在将最后一个字符添加到混淆的行之前,我打破了循环。将 eof 处理移到底部解决了这个问题。

由于我还无法发表评论,这是我对 @kyle bridenstine 的回答

我使用以下脚本尝试了同样的问题(摘录如下): https://github.com/setsuna-/golang/blob/master/mass_replace.go

将错误测试从第 88 行移动到第 93 行,源文件的最后一行以
结尾 没有换行符的 } 现在可以正确复制到目标文件。

bufr := bufio.NewReader(f1)
bufr2 := bufio.NewWriter(f2)
for {
    line, err := bufr.ReadString('\n')
    if strings.Contains(line, searchText) {
        line = strings.Replace(line, searchText, replaceText, -1)
        count++
    }
    bufr2.WriteString(line)
    if err != nil {
        break
    }
}
bufr2.Flush()

理论要掌握,实操不能落!以上关于《如果没有换行符,如何从 reader.ReadString 获取最后一行》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>