SAS中文论坛

 找回密码
 立即注册

扫一扫,访问微社区

查看: 1142|回复: 9
打印 上一主题 下一主题

练习S1:把字符中的非数字非字母的符号都变为星号或者0或者其他符号

[复制链接]

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
楼主
 楼主| 发表于 2008-12-12 16:18:23 | 只看该作者

练习S1:把字符中的非数字非字母的符号都变为星号或者0或者其他符号

练习S1:把字符中的非数字非字母的符号都变为星号或者0或者其他符号

DATA SXLION;
INPUT STRING $ 1-24;
DATALINES;
12345a+*-52@.e$d*dd1.12d
8 642ji23kl2w~`2k2-2o4=3
;
run;

假如说用0来代替其他字符。

最后得:
newSTRING
2345a0005200e0d0dd1012d
80642ji03kl2w002k202o403
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
沙发
 楼主| 发表于 2008-12-12 18:58:08 | 只看该作者

Re: 练习S1:把字符中的非数字非字母的符号都变为星号或者0或者其他符号

[code:itdfq5ie]data result;
        set sxlion;
        newstring=prxchange('s/\W/0/',-1,string);
run;[/code:itdfq5ie]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
板凳
 楼主| 发表于 2008-12-13 18:46:54 | 只看该作者

Re: 练习S1:把字符中的非数字非字母的符号都变为星号或者0或者其他符号

[size=200:3hjrwzb2][u:3hjrwzb2]很好,学习中。[/u:3hjrwzb2][/size:3hjrwzb2]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
地板
 楼主| 发表于 2008-12-14 22:13:02 | 只看该作者

Re: 练习S1:把字符中的非数字非字母的符号都变为星号或者0或者其他符号

byes的prx函数不错,不过对于字符下划线“_”的没有解决。

DATA ex(keep=string newstring);
   SET sxlion;
   ARRAY X[24] $1.;
   DO J = 1 TO 24;
    if ANYALNUM(string,j) eq j then x[j]=SUBSTR(STRING,J,1);
        else X[J]=0;
   END;
   DROP J;
   newstring=catt(of x1-x24);
RUN;
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
5#
 楼主| 发表于 2008-12-15 12:36:28 | 只看该作者

Re: 练习S1:把字符中的非数字非字母的符号都变为星号或者0或者其他符号

哦,下画线也不要.那就用下面的
[code:1nws6h5q]
data result;
   set sxlion;
   newstring=prxchange('s/[\W|_]/0/',-1,string);
run;[/code:1nws6h5q]
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
6#
 楼主| 发表于 2008-12-15 12:48:20 | 只看该作者

Re: 练习S1:把字符中的非数字非字母的符号都变为星号或者0或者其他符号

我看到正则表达式就头痛,看来这辈子都学不会了。byes大师真是N人啊!
回复 支持 反对

使用道具 举报

0

主题

0

帖子

2

积分

新手上路

Rank: 1

积分
2
7#
发表于 2008-12-15 13:55:27 | 只看该作者

Re: 练习S1:把字符中的非数字非字母的符号都变为星号或者0或者其他符号

DATA SXLION;
newstring='12345a+*-52@.e$d*dd1.12d8 642ji23kl2w~`2k2-2o4=3';
oldstring='12345a+*-52@.e$d*dd1.12d8 642ji23kl2w~`2k2-2o4=3';
do i=1 to length(newSTRING);
a=substr(newSTRING,i,1);
if not ( 'A'<=a<='Z' or 'a'<=a<='z' or  '0'<=a<='9' ) then substr(newSTRING,i,1)='*';
end;
drop i a;
run;

我的山寨版~~希望好理解一点~~
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
8#
 楼主| 发表于 2008-12-17 02:32:59 | 只看该作者

Re: 练习S1:把字符中的非数字非字母的符号都变为星号或者0或者其他符号

同志们信byes啦,不要白费力气,有些条件单靠字符串函数根本就很难表达。那靓仔超级版主说头疼是逗咱们开心呢 <!-- s:D --><img src="{SMILIES_PATH}/icon_biggrin.gif" alt=":D" title="Very Happy" /><!-- s:D -->
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
9#
 楼主| 发表于 2008-12-17 10:05:12 | 只看该作者

Re: 练习S1:把字符中的非数字非字母的符号都变为星号或者0或者其他符号

只是练了下字符串函数,如 ANYALNUM(string &lt;,start&gt;)   Searches a character string for an alphanumeric character and returns the first position at which it is found
还是修炼 perl正则表达式是王道!!!
回复 支持 反对

使用道具 举报

49

主题

76

帖子

1462

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1462
10#
 楼主| 发表于 2008-12-17 13:10:19 | 只看该作者

Re: 练习S1:把字符中的非数字非字母的符号都变为星号或者0或者其他符号

byes的确称得上大师级的了,呵呵
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-5 05:22 , Processed in 0.078984 second(s), 19 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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