我想通过以下语句获得一些帮助。
我试图将 2 个 prxchange 语句合并为一个。
该代码的目的是将任何不可打印的 ASCII 字符更改为相应的 2 个字符的十六进制代码,并用双括号括起来,例如 [A0]。
下面的第一条语句更改十六进制字符 xA0。 第二个将 x20 到 x7E 范围内的十六进制字符更改为 x7E。
是否可以将这些语句合并为一个?
var = prxchange ( "s/([xA0])/[A0]/" , -1 , varcontent);
var = prxchange ( "s/([^x20-x7E])/[$1]/" , -1 , varcontent);
您是否考虑过使用HEX.
格式来执行此操作?如果您有 SAS,正则表达式似乎是一种相当复杂的方法。
http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a000205154.htm
例如
data _null_;
length a b $32;
a = '09400940'x;
do i = 1 to length(a);
char = substr(a,i,1);
rank = rank(char);
if rank < 32 then b = cats(b,'[',put(rank,hex2.),']');
else b = cats(b,char);
end;
put a= $32. / b= $32.;
run;