【发布时间】:2020-11-23 12:46:09
【问题描述】:
我正在努力研究如何轻松地检查 Postscript 中的字符串,例如 (123456)
只包含数字。例如0,1,2,3,4,5,6,7,8 或 9。
例如:
(1235) isnum 应该将 true 放入堆栈
(1234a) isnum 应该把 false 放在堆栈上
(1.234) isnum 应该把 false 放在堆栈上
我真的必须使用循环来检查每个字符是否在 (0-9) 之内,如下所示:
/integers (0123456789) def
% checks if a char is in (0123456789)
/isnum
{
integers exch search
{ pop pop pop true }
{ pop false }ifelse
}
def
/isnumber {
% [(number),(number)]
length 1 sub % [(number), length-1]
0 exch % [(number), 0, length-1]
1 exch % [(number), 0, 1, length-1]
% [(number), 0, 1, length-1]
dup /numlen exch 1 add def
/counter 0 def
% for(j=0; j<length-1; j++)
{
/j exch def
% [(number)]
dup j 1 getinterval % [(number), number[j]]
/char exch def % [(number)] && char == number[j]
char isnum {
/counter counter 1 add def
}if
}for
counter numlen eq
{
true
}
{
false
}ifelse
}def
(12345) (12345) isnumber ==> true 在栈上
或者有更快的程序吗?
【问题讨论】:
标签: string numbers compare postscript