SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 622|回复: 1
打印 上一主题 下一主题

选取某字段中文字符,使用循环的问题

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2009-8-26 14:34:53 | 只看该作者

选取某字段中文字符,使用循环的问题

本来想再循环中使用
ouchar=ouchar||ch(i);实现,无奈结果不对,只能改用下列方法,请问用循环怎么写啊,写成
我下面那种形式太麻烦了。

data mylib.test(keep = cxmc ouchar);
        set mylib.cxmc;
        cxmc=compress(cxmc,' -_()');
        i=1;
        array ch(30) $1.;
        do while(i<=30);
                ch(i)=substr(cxmc,i,1);
                if rank(ch(i)) < 161 then
                        ch(i)="";
                i=i+1;
        end;
        ouchar=ch(1)||ch(2)||ch(3)||ch(4)||ch(5)||ch(6)||ch(7)||ch(8)||ch(9)||ch(10)||
                        ch(11)||ch(12)||ch(13)||ch(14)||ch(15)||ch(16)||ch(17)||ch(18)||ch(19)||ch(20)||
                        ch(21)||ch(22)||ch(23)||ch(24)||ch(25)||ch(26)||ch(27)||ch(28)||ch(29)||ch(30);
        ouchar=compress(ouchar);
run;
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2009-8-26 21:07:33 | 只看该作者

Re: 选取某字段中文字符,使用循环的问题

data mylib.test(keep = cxmc ouchar);
   set mylib.cxmc;
   cxmc=compress(cxmc,' -_()');
   if _n_=1 then ouchar=substrn(cxmc,1,0);*保证ouchar有足够的长度而且初始值为空;
   do i=1 to length(cxmc);
      if rank(substrn(cxmc,i,1))<161 then ouchar=compress(ouchar||substrn(cxmc,i,1));
   end;
run;
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|小黑屋|手机版|Archiver|SAS中文论坛  

GMT+8, 2026-2-5 21:38 , Processed in 0.081121 second(s), 20 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表