SAS中文论坛
标题:
如何把一字符中的所有标点符号压缩掉
[打印本页]
作者:
shiyiming
时间:
2011-10-13 22:27
标题:
如何把一字符中的所有标点符号压缩掉
字符串很长,里面有各种各样的标点符号,只想保留字母,数字,和中文字符。感觉很复杂..
求教高手,问题应该如何处理呢?
作者:
shiyiming
时间:
2011-10-14 08:46
标题:
Re: 如何把一字符中的所有标点符号压缩掉
试试正则表达
作者:
shiyiming
时间:
2011-10-14 10:54
标题:
Re: 如何把一字符中的所有标点符号压缩掉
[quote="yugao1986":j0ewzesj]试试正则表达[/quote:j0ewzesj]
正则好像也不好把中文字符分开吧...之前用过正则,没弄出来,还望大侠指教下...
作者:
shiyiming
时间:
2011-10-15 12:25
标题:
Re: 如何把一字符中的所有标点符号压缩掉
[code:1qq3y5b7]data want;
set your;
length flag $30;
if anypunct(_char_); *只对包含有标点的字符才接着执行下边的操作,否则系统陷入死循环;
last_pos=lengthn(_char_)-anypunct(reverse(_char_)); *直接定位最后一个标点的位置,若最后字符为标点符号,可直接取字符字符的逻辑长度,否则也会陷入死循环;
n1=anypunct(_char_); *第一个标点符号的位置;
n2=notpunct(_char_,n1+1); *紧挨着n1处标点符号后的第一个非标点字符的位置;
len_p=n2-n1; *标点符号的长度;
punct=substrn(_char_,n1,len_p); *提取n1处开始,长度为len_p的标点符号;
flag=punct; *记录标点符号;
do while(n2<last_pos and n1<last_pos); *提取所有的字符_char_中的标点符号并记录在flag中;
n2=notpunct(_char_,n1+1);
len_p=n2-n1;
punct=substrn(_char_,n1,len_p);
flag=trimn(flag)||strip(punct);
n1=anypunct(_char_,n2);
end;
compress=compress(_char_,quote(strip(flag))); *对flag中记录的所有标点符号进行压缩处理;
run;[/code:1qq3y5b7]
作者:
shiyiming
时间:
2012-7-25 14:47
标题:
Re: 如何把一字符中的所有标点符号压缩掉
data _null_;
text='a%&,madsf152./,';
new=compress(text,,'p');
put new;
run;
欢迎光临 SAS中文论坛 (http://www.mysas.net/forum/)
Powered by Discuz! X3.2