全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
9142 0
2017-06-12

在日常的工作中,经常需要读取字符串的最后一个字符。举一个典型的例子Codelist="000001_SZ 600000_SH 300001_SZ",这里字符串中的每个字符以空格隔开。期望取出300001_SZ。下面介绍三种常用的方法。


/*最简单的方法:运用scan 函数 scan(Codelist,-1,' '),这里-1指的是从后往回取*/

data _null_;

Codelist="000001_SZ 600000_SH 300001_SZ";

length Lastword $10.;

Lastword = scan(Codelist,-1,' ');

put Lastword=;

run;


/*最扯蛋的方法:如果你觉得 -1 用的比较别扭 reverse+scan reverse的功能在于将字符颠倒比如 将code颠倒成edoc*/


data _null_;

Codelist="000001_SZ 600000_SH 300001_SZ";

length Lastword $10.;

Lastword=reverse(scan(reverse(Codelist),1,' '));

put Lastword=;

run;


/*最装逼的方法:运用do until+scan*/


data _null_;

Codelist="000001_SZ 600000_SH 300001_SZ";

i=0;

length Lastword $10.;

if(Codelist >' ')then do;

do until(Lastword=' ');

    i+1;

    Lastword=scan(Codelist,i,' ');

end;

  Lastword=scan(Codelist,i-1,' ');

put Lastword=;

end;

run;

do until(expression);

/* 程序块*/

end;

/*这里需要注意的是 do until的用法,do循环至少被执行一次,也就是说,先执行程序块的内容再执行expression。*/


当然你还可以通过上述方法读取 第N个字符,以及将上述方法写成宏的形式,灵活运用。


另外本人开一个微信公众号,监督自己以及与大家分享SAS学习和投资心得,欢迎扫码,或者搜索 SAS与量化投资,关注





二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群