- 阅读权限
- 255
- 威望
- 1 级
- 论坛币
- 7113 个
- 通用积分
- 499.0346
- 学术水平
- 217 点
- 热心指数
- 220 点
- 信用等级
- 136 点
- 经验
- 15006 点
- 帖子
- 251
- 精华
- 1
- 在线时间
- 1698 小时
- 注册时间
- 2005-6-21
- 最后登录
- 2023-12-19
|
- proc fcmp outlib=work.funcs.benfunc;
- function xscan(string $, position, delimiter $) $200;
- attrib returnString length=$200;
- if missing(strip(delimiter)) then _delimiter='\s';
- else _delimiter=delimiter;
- if position lt 0 then do;
- _position=max(abs(position)-1,0);
- pattern=prxparse(cats("/([^",_delimiter,"]*",_delimiter,"){",_position,"}[^",_delimiter,"]+$/"));
- returnString=substrn(string,prxmatch(pattern,strip(string)));
- end;
- else do;
- _position=position;
- pattern=prxparse(cats("/^([^",_delimiter,"]*(",_delimiter,"|$)){",_position,"}/"));
- call prxsubstr(pattern,strip(string),start,length);
- returnString=substrn(string,start,ifn(length=lengthn(string),length,length-1));
- end;
- return(returnString);
- endsub;
- run;
- options cmplib=work.funcs;
- data test;
- x='a,bb,ccc,dddd,bb,eeeee';
- length y $40;
- do i=-7,-6,-5,-4,-3,-2,-1,0,1,2,3,4,5,6,7;
- y=xscan(x,i,',');
- output;
- end;
- run;
复制代码
|
|