猿问

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

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

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

问题是有时我遇到一个文件末尾没有换行符,我假设line, err := reader.ReadString('\n')如果它末尾没有定界字符就不会读取字符串?

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


斯蒂芬大帝
浏览 111回答 2
2回答

慕标琳琳

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

ibeautiful

通过将错误测试从第 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()
随时随地看视频慕课网APP

相关分类

Go
我要回答