一、字符类函数:
(一)提取字符串中字符、数字或空格所在位置的函数
(1)Anyalnum(参数,n) /*从n开始计算出现第一个字符或者数字的位置是多少*/
eg1:
data _null_;/*当不想产生数据集时在data后使用_null_关键字*/
a='321 abc';
b=anyalnum(a,4);/* or b=anyalnum(a,3) 结果:b=3*/
put b=;
run;
结果:b=5
eg2: Anyalnum函数的应用 Scanning a String from Left to Right;
data _null_;
string='Next = Last + 1';/*=号前后各有一个空格*/
j=0;
do until(j=0);
j=anyalnum(string,j+1);
if j=0 then put +3 "That's all";
else do;
c=substr(string,j,1);
put +3 j= c=;
end;
end;
run;
The following lines are written to the SAS log:
j=1 c=N j=2 c=e j=3 c=x j=4 c=t j=8 c=L j=9 c=a j=10 c=s j=11 c=t j=15 c=1 That's all
(1)Anyalnum(参数,n) /*从n开始计算出现第一个字符或者数字的位置是多少*/
(2)Anyalpha(参数,n)/*不输入n时返回第一个字符的位置,输入n时从n开始第一次出现字符的位置*/
(3)anydigit( 参数,n)/*不输入n时返回第一个数字的位置,输入n时从n开始第一次出现数字的位置*/
(4)anyspace(参数,n)/*不输入n时返回第一个空格的位置,输入n时从n开始第一次出现空格的位置*/
eg:
data _null_; a='123 e st ,#2 ';
R_alpha1=anyalpha(a,3);
R_alpha2=anyalpha(a,10); R_digit1=anydigit(a,3); R_digit2=anydigit(a,10);
R_space1=anyspace(a,3);
R_space2=anyspace(a,10); put
R_alpha1=
R_alpha2= R_digit1= R_digit2=
R_space1=
R_space2= run; 结果:
R_alpha1=5 R_alpha2=0
R_digit1=3 R_digit2=12
R_space1=4 R_space2=13
(二)字符连接类函数
(1)Cat(arg1,arg2,....argn)/*连接字符串并且保留原来字符串之间的空格*/
(2)Cats(agr1,arg2,...,argn)/*连接字符串并且去掉原来字符之间的空格*/
(3)Catx('separator-sign',arg1,arg2,...,argn)/*连接字符串去掉字符串间的空格增加设定的连接符*/
eg:
data _null_; a=' Dog'; b='Cat '; c='Pig '; R_cat=cat(a,b,c); R_cats=cats(a,b,c); R_catx1=catx('&',a,b,c); R_catx2=catx('@',a,b,c); put R_cat= R_cats= R_catx1= R_catx2= ; run;
结果:
R_cat=DogCat Pig
R_cats=DogCatPig
R_catx1=Dog&Cat&Pig
R_catx2=Dog@Cat@Pig(三)其他字符串类函数
(1)compress(arg,'sign')/*压缩字符串移除字符串中指定的符号默认移除空格*/
eg:
data _null_; a=' Dog &cat '; R1=compress(a); R2=compress(a,'&'); put R1= R2= ; run;
结果:
R1=Dog&cat R2=Dog cat
(2)Index(arg,'string')/*返回指定字符串的起始位置*/ (3)length(str) *返回指定字符串的长度 字符串尾部的空格不计算在内*/
eg:
data _null_; a='Dogcat'; b=' Dog cat'; c=' Dog cat '; Ra=length(a); Rb=length(b); Rc=length(c); put Ra= Rb= Rc= ; run;
结果:
Ra=6 Rb=8 Rc=8
(3)Substr(str,n,m)/*从位置n开始从字符串中提取m个字符*/
(4)Translate(string,to,from,<,...to-n,from-n>)
Eg:
data _null_;
A='8/14/2010';
B=translate(a,'-','/');
put
B=
;
run;
结果:
B=8-14-2010
(5)Tranwrd(str,’from’,’to’)
Eg:
data _null_;
A='dog cat';
B=tranwrd(a,'cat','pig');
put;
B=
;
run;
结果:
B=dog pig
(6)trim(string) /*remove trailing blanks from string express*/
(7)upcase(string)/*convert all the letter into upcase*/