目录
data test1;
x1=' he llo ';
x2=' wo rld ';
/* strip():去掉字符串前后空格*/
out1=strip(x1);
out2=strip(x2);
out3=out1||out2;
out4=strip(x1)||strip(x2);
/* left():将左边所有空格移动到右边*/
out5=left(x1);
out6=left(x2);
out7=left(x1)||left(x2);
/* right():将右边所有空格移到左边*/
out8=right(x1);
out9=right(x2);
out10=right(x1)||right(x2);
/* trim():删除右边所有空格*/
out11=trim(x1);
out12=trim(x2);
out13=trim(x1)||trim(x2);
/* compress():去掉字符串包含的所有空格*/
out14=compress(x1);
out15=compress(x2);
out16=compress(x1)||compress(x2);
/* compbl():将多个空格压缩为一个空格*/
out17=compbl(x1);
out18=compbl(x2);
out19=compbl(x1)||compbl(x2);
;
run;
Strip
strip():删除字符串前后空格。
上述代码运行结果如下:
上述运行结果中,x1和x2为原始数据,在数据集中,字符串后方的三个空格并未显示,但查看变量属性可发现x1和x2的长度依然为12,而使用length函数输出x1和x2的长度时,结果为9。这表明,字符串在读入时,后方三个空格被读入,但在输出时,最后三个空格占位被自动舍去。
而out1和out2变量,使用了strip函数,该函数作用是删除字符串前后所有空格。上图展示中,可见out1和out2相较于x1和x2,确实删除了字符串前方的三个空格。右键查看变量属性,out1和out2变量长度依然为12。但length函数输出变量长度,结果为6。
out3将out1和out2连接,得到的结果中,he llo和wo rld字符中间隔6个空格,而out4结果中,x1和x2字符中间无空格。对此,猜测out3中写法在运行时strip函数自动合并,即为strip(x1||x2)运行结果。
Left
left():将左边空格移动到右边。
out7结果中,中间间隔6个空格,为x1字符串开头的3个空格移动至后方,x2类似,所以最终中间仍有6个空格。
Right
right():将右边空格移动到左边。
out10结果中,中间间隔6个空格,字符串开头有6个空格。为x1字符串结尾的3个空格移动至前方,x2类似,所以最终中间仍有6个空格,来自x2,开头仍有6个空格,来自x1。
Trim
trim():删除右边所有空格。
out13中,中间间隔3个空格,开头遗留3个空格。x1和x2字符串的右边三个空格均被删除,保留左边三个空格,所以运行结果如上。
Compress
compress():去掉字符串包含的所有空格。
out16结果中,所有与空格均被删除。
Compbl
compbl():将多个空格压缩为一个空格
out19结果中,中间间隔2个空格,开头1个空格。x1和x2开头和结尾处的3个空格被压缩为1个空格,而后连接。