楼主: hello_fj
8519 0

[程序分享] 三种方法读取字符串的最后一个字符 [推广有奖]

  • 5关注
  • 1粉丝

博士生

20%

还不是VIP/贵宾

-

威望
0
论坛币
2 个
通用积分
0.0167
学术水平
39 点
热心指数
51 点
信用等级
26 点
经验
5664 点
帖子
133
精华
0
在线时间
365 小时
注册时间
2014-6-8
最后登录
2022-3-24

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

在日常的工作中,经常需要读取字符串的最后一个字符。举一个典型的例子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与量化投资,关注





二维码

扫码加我 拉你入群

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

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

关键词:最后一个 字符串 Expression Reverse express 字符串

公众号:SAS与量化投资
您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-20 14:27