为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
斯蒂芬大帝 2023-04-04 14:19:29
我一直在用 Go 编写这个 Php 解析器,但我似乎遇到了一个小问题,即有时最后一行没有添加到我正在编写的新文件中。基本上我会检查原始的 Php 文件,进行一些混淆,然后将这些混淆的行写入一个新文件。问题是有时我遇到一个文件末尾没有换行符,我假设line, err := reader.ReadString('\n')如果它末尾没有定界字符就不会读取字符串?有没有一个不涉及使用扫描仪的简单解决方案,因为很多解析代码都依赖于解释换行符......
查看完整描述

2 回答

?
慕标琳琳

TA贡献1830条经验 获得超9个赞

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



查看完整回答
反对 回复 2023-04-04
?
ibeautiful

TA贡献1993条经验 获得超5个赞

通过将错误测试从第 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()


查看完整回答
反对 回复 2023-04-04
  • 2 回答
  • 0 关注
  • 102 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信