- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在用 Java 编写解析器并尝试利用 Java 的 PushbackReader。如果我的解析器猜错了,它可能需要回溯 - 但一旦读者到达 EOF,它就会失败。
假设我正在解析一个带引号的字符串并且正在寻找结束引号。如果我的任何解析器插件无法完全完成,它们会尝试让阅读器保持原始状态并将其传递给下一个插件。 IE:我通常将字符推回缓冲区,让下一个元素尝试解析缓冲区。
不幸的是,如果我一直“读取”到最后一个字符……然后读取 EOF,PushbackReader 将不允许我将任何内容推回到它上面。因此,我的解析无法完成,因为这些字符丢失了!
是否需要为这种类型的字符串处理编写自己的阅读器?
编辑:此外,当我读取最后一个字符(EOF 之前的字符)时,我也无法“未读取”该字符。是否有针对此问题的标准解决方法 - 除了创建我自己的堆栈或缓冲区实现之外?
最佳答案
注意永远不要取消读取 EOF 标记,PushbackReader 中的缓冲区是 char[] 类型,因此整数 -1 将被转换为 char 0xFFFF,这将是 read 方法返回的下一个字符。例如,在解析带引号的字符串时,除了结束引号字符之外,始终包括对 -1 的检查,并将其作为失败情况处理,例如通过抛出 IOException。
关于Java 的 PushbackReader 和 EOF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4974773/
一个有点模糊的问题,我提前道歉。 我正在使用 Java 构建解析器一书的帮助下构建小型解析器的标记部分。它使用 PushbackReader 和其中包含的 String 作为首先检测给定字符串的第一个
我目前正在使用 PushbackReader在等待它“应该”成为 EOF 的位置时,我得到了字符 65535,我想知道这是否正常。 我的 EOF 在哪里?! 谢谢。 最佳答案 Java char 是无
我正在用 Java 编写解析器并尝试利用 Java 的 PushbackReader。如果我的解析器猜错了,它可能需要回溯 - 但一旦读者到达 EOF,它就会失败。 假设我正在解析一个带引号的字符串并
我正在寻找与 Java 的 unread() 方法等效的 C#。 与 PushbackReader 等效的 C# 据说是 System.IO.StreamReader,但 StreamReader 没
我是一名优秀的程序员,十分优秀!