全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
4353 6
2012-11-16
现在我有一个宏变量如下所示:
%let NameString=张三 李四 王五;
需要把这些名字都加上单引号,并用逗号分隔
即变成:'张三','李四','王五'
我用[\U4E00-\U9FA5]+,发现匹配不了
不知道该怎么匹配中文了
求教高手
谢谢
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2012-11-16 13:34:38
diffcult to deal with
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-11-16 14:41:04
%let NameString=张三 李四 王五;
%let name=%sysfunc(prxchange(s/[\S]+/'$0'/,-1,&namestring));/*有点投机,让非空白符代表汉字*/
%let name=%sysfunc(tranwrd(&name,' ',','));
%put &name;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-11-16 15:33:39
有没有原始数据?可以在文本文档中处理,把空格替换成  ‘,’   就可以了
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-11-16 17:24:54
scarfacetony 发表于 2012-11-16 15:33
有没有原始数据?可以在文本文档中处理,把空格替换成  ‘,’   就可以了
这个我也试过,在用','替换空格的时候总是会出现由于空格和逗号引起的问题,即用TRANWRD函数加%STR(','),会得到错误提示。例如,运行下述代码:
复制代码
会得到错误提示:
NOTE 49-169: The meaning of an identifier after a quoted string may change in a future SAS
             release.  Inserting white space between a quoted string and the succeeding
             identifier is recommended.
我的版本是9.1.3,不知道以后版本有改进没有
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-11-16 17:27:21
我最后解决了这个问题,是在网上搜到的

正则匹配中文汉字根据页面编码不同而略有区别:
GBK/GB2312编码:[\x80-\xff>]+ 或 [\xa1-\xff]+
UTF-8编码:[\u4e00-\u9fa5]

经我在SAS 9.1.2环境下测试,[\xa1-\xff]+可用。而我之前搜到[\u4e00-\u9fa5]不好用,可能是和我.sas文件的编码有关,默认的文件编码应该是GBK/GB2312的了。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群