SAS中文论坛

标题: 练习S1:把字符中的非数字非字母的符号都变为星号或者0或者其他符号 [打印本页]

作者: shiyiming    时间: 2008-12-12 16:18
标题: 练习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
作者: shiyiming    时间: 2008-12-12 18:58
标题: Re: 练习S1:把字符中的非数字非字母的符号都变为星号或者0或者其他符号
[code:itdfq5ie]data result;
        set sxlion;
        newstring=prxchange('s/\W/0/',-1,string);
run;[/code:itdfq5ie]
作者: shiyiming    时间: 2008-12-13 18:46
标题: Re: 练习S1:把字符中的非数字非字母的符号都变为星号或者0或者其他符号
[size=200:3hjrwzb2][u:3hjrwzb2]很好,学习中。[/u:3hjrwzb2][/size:3hjrwzb2]
作者: shiyiming    时间: 2008-12-14 22:13
标题: 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;
作者: shiyiming    时间: 2008-12-15 12:36
标题: Re: 练习S1:把字符中的非数字非字母的符号都变为星号或者0或者其他符号
哦,下画线也不要.那就用下面的
[code:1nws6h5q]
data result;
   set sxlion;
   newstring=prxchange('s/[\W|_]/0/',-1,string);
run;[/code:1nws6h5q]
作者: shiyiming    时间: 2008-12-15 12:48
标题: Re: 练习S1:把字符中的非数字非字母的符号都变为星号或者0或者其他符号
我看到正则表达式就头痛,看来这辈子都学不会了。byes大师真是N人啊!
作者: Qiong    时间: 2008-12-15 13:55
标题: 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;

我的山寨版~~希望好理解一点~~
作者: shiyiming    时间: 2008-12-17 02:32
标题: Re: 练习S1:把字符中的非数字非字母的符号都变为星号或者0或者其他符号
同志们信byes啦,不要白费力气,有些条件单靠字符串函数根本就很难表达。那靓仔超级版主说头疼是逗咱们开心呢 <!-- s:D --><img src="{SMILIES_PATH}/icon_biggrin.gif" alt=":D" title="Very Happy" /><!-- s:D -->
作者: shiyiming    时间: 2008-12-17 10:05
标题: 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正则表达式是王道!!!
作者: shiyiming    时间: 2008-12-17 13:10
标题: Re: 练习S1:把字符中的非数字非字母的符号都变为星号或者0或者其他符号
byes的确称得上大师级的了,呵呵




欢迎光临 SAS中文论坛 (https://mysas.net/forum/) Powered by Discuz! X3.2