summerwe 发表于 2017-8-23 11:44
您好,感谢回复,我试了下,最后跑出来的结果是这样的:
a b c
lee ...
这个代码应该能跑出来 ,是不是读数据时没有设置 变量的长度
另外可以尝试用正则表达式解决:
data a;
length x $50;
input x $;
cards;
lee-290-xyz
zhoujielun-2390-kkkk
;
data test;
set a(rename=(x=x1));
pattern=prxparse('/(\D+)-(\d+)-(\D+)/');
if prxmatch(pattern,x1)>0 then do;
call prxposn(pattern,1,start1,length1);
call prxposn(pattern,2,start2,length2);
call prxposn(pattern,3,start3,length3);
x=substr(x1,start1,length1);
y=substr(x1,start2,length2);
z=substr(x1,start3);
end;
run;