我一直在用 Go 编写这个 Php 解析器,但我似乎遇到了一个小问题,即有时最后一行没有添加到我正在编写的新文件中。基本上我会检查原始的 Php 文件,进行一些混淆,然后将这些混淆的行写入一个新文件。问题是有时我遇到一个文件末尾没有换行符,我假设line, err := reader.ReadString('\n')如果它末尾没有定界字符就不会读取字符串?有没有一个不涉及使用扫描仪的简单解决方案,因为很多解析代码都依赖于解释换行符......
2 回答
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()
- 2 回答
- 0 关注
- 110 浏览
添加回答
举报
0/150
提交
取消