| 
 | 
地板
 
 
 楼主 |
发表于 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则前面的朋友方法也是不错的。 |   
 
 
 
 |