1

我是直接在 postscript 中编程的新手。

我正在从文件中读取数据,并且正在使用 read 命令来解析符号。

我要检查的大多数符号长度为 2 个字符,一个字符长度为 3 个字符。我会将长度为 3 个字符的字符更改为两个字符,但这无济于事,原因如下:

  1. 这些符号是一个标准,所以我不能说.. 好吧,感谢您只将其中一个做成 3 个字符,这与其他所有字符不同!
  2. 具有 3 个字符的符号的前 2 个字符与另一个符号相同。

如果前两个符号匹配,我需要能够“窥视”文件中的下一个字符,并且如果窥视的字符与我想要制作的 3 个字符符号不匹配,则不修改读取顺序。

示例:文件文本为字符串:“AB3;ABB4;”

在这种情况下,我将读取 A,然后是 B,因为这两个字符一起是“AB”,所以我需要查看读取下一个字符是否会产生 B.. 如果不是,我不想修改我的阅读顺序,所以我可以在代码中正常进行提取值。如果是这样,我现在有我的 3 个字符符号,可以继续正常提取值。

谢谢你。

4

1 回答 1

0

Postscript 没有unget函数,因此您不能将字节推回流中以便稍后再次读取。但是,根据操作系统的支持,Level 2 Postscript 允许您重新定位文件。所以你可以peek像这样实现你的功能:

% file  peek  int true
%             false
/peek {
    dup fileposition exch dup  % pos file file
    read { %true:  pos file int
        3 1 roll exch setfileposition true
    }{ %false: pos file
        pop pop false
    } ifelse
} def
于 2014-03-01T07:47:56.597 回答