楼主: pinseng
2751 4

[问答] 寻找一个字符在某个变量中的位置的问题 [推广有奖]

  • 2关注
  • 3粉丝

硕士生

20%

还不是VIP/贵宾

-

威望
0
论坛币
395 个
通用积分
26.2433
学术水平
5 点
热心指数
8 点
信用等级
6 点
经验
2075 点
帖子
135
精华
0
在线时间
116 小时
注册时间
2006-11-11
最后登录
2016-6-23

楼主
pinseng 发表于 2011-1-20 12:01:01 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
问题大概是这样: 有一个string:  abc_de_fg_ac_ff .  现在要找出其中的每个 '_' 的位置。 尝试着用下面的code,但是总是有些问题。能不能帮我看看

谢谢


data s1;
  str='abc_de_fg_ac_ff';
run;

data s2;
   set s1;
   aa=indexc(str,'_');
   %let pos=aa;
run;

%macro ss;
   %let pos=aa;
   %put &&&pos;
   %do %while (aa ne);
      str=substr(str,aa+1);
      aa=indexc(str,'_');
      %let pos=%eval(&&&pos+aa);
    %end;
%mend;
二维码

扫码加我 拉你入群

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

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

关键词:SUBSTR string Index tring while 变量 位置 字符

回帖推荐

elek.me 发表于3楼  查看完整内容

本帖被以下文库推荐

沙发
soporaeternus 发表于 2011-1-20 12:48:44
  1. %MACRO SS(str,dlm);
  2.         %let stt=1;
  3.         %let pos=0;
  4.         %do i=1 %to %sysfunc(count(&str,%str(&dlm))) %by 1;
  5.                 %let pos=%eval(%index(%substr(&str,&stt),&dlm)+&stt-1);
  6.                 %let stt=%eval(&pos+1);
  7.                 %put &pos;
  8.         %end;
  9. %MEND SS;
  10. %SS(abc_de_fg_ac_ff,_);
复制代码
稍加修改......
Let them be hard, but never unjust

藤椅
elek.me 发表于 2011-1-20 13:06:26
  1. data s1;
  2.   str='abc_de_fg_ac_ff';
  3. run;

  4. data want;
  5.         set s1;
  6.         do i=1 to length(str);
  7.                 if substr(str,i,1)="_" then put _n_ i;
  8.         end;
  9. run;
复制代码
已有 2 人评分论坛币 学术水平 热心指数 收起 理由
crackman + 20 + 1 + 1 精彩帖子
soporaeternus + 1 好简单......,惯性思维了......

总评分: 论坛币 + 20  学术水平 + 2  热心指数 + 1   查看全部评分

我的博客: http://elek.me/sas
联系我: http://about.me/elek

板凳
pinseng 发表于 2011-1-20 13:12:16
谢谢soporaeternus的热心帮助,经常看见您回帖帮忙解决问题。 多谢!!

谢谢elek.me的好心帮忙,以后还请多多指教!!!多谢!

报纸
elek.me 发表于 2011-1-20 13:38:10
楼主很客气。
我的博客: http://elek.me/sas
联系我: http://about.me/elek

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-6 05:52