|
地板
楼主 |
发表于 2003-10-20 11:57:47
|
只看该作者
[quote="willon":4c82a]忙里偷闲,hehe!
data tem;
src='1**c*deab*cc*cd';
rc=length(trim(src))-length(compress(trim(src),'*'));
;run;
proc print;run;
我好像没有看过此类直接的函数,以上的先试试看吧。[/quote:4c82a]
这个方法只能针对单字符,对[b:4c82a][u:4c82a]包含2个或2个以上的字符串[/u:4c82a][/b:4c82a],如[b:4c82a]cc[/b:4c82a],则不能获得正确的rc。
改良方法有2个:
1/ 若SASV9+,则用函数count()
2/ 用do循环
data tem(drop =src i);
src='1**c*deab*cc*cd';
i=index(src, 'cc');
do while (i>0);
rc + 1;
src=substr(src, i+1);
i=index(src, 'cc' );
end;
run;
另外有个疑问,你所指的[b:4c82a][u:4c82a]字符串记数的概念[/u:4c82a][/b:4c82a]。
src ='1**c*deab*cc*cd';
按您的要求,count(cc)=1还是4?
我的两个方法指的是count(cc)=1。若要求=4则前面的朋友方法也是不错的。 |
|