SAS宏的特殊字符引用
来源:互联网 发布:c 调用c dll 源码 编辑:程序博客网 时间:2024/06/03 22:00
From: http://blog.chinaunix.net/uid-675476-id-2076827.html
在SAS宏中,字符串是用双引号括起来的,但如果字符串中要包含双引号或百分号等特殊字符就要使用单引号来对字符串中的特殊字符逃逸。比如:
%let test = ‘”A” is the first character !’;
但如果字符串中包含单引号,则上述方法便失效了。所以更一般的,SAS提供了%str和%nrstr来对特殊字符转义。其中%str可以转义逗号,单双引号,左右小括号,波浪号,分号,空格,尖角号等,而%nrstr除了可以转义%str能够转义的特殊符号,还可以转义与(&)符号和百分号。具体的使用方法如:
%let test=%str(“A” is the first character!);
需要注意的是,当使用%str时,如果引用的字符串包含有不匹配的单双引号,括号,必须使用百分号转义,如:
%let test=%str(I%’m consultant.);
当然,笔者为了怕出错误,%str中凡是遇到特殊字符都用百分号转义了,如:
%macro doit;
X “%str(copy %”a%” %”b%”)”;
%mend doit
最为特殊的符号是百分号本身,如果要在%str中包含百分号,同时又不让SAS将其及其后%的字符看成是宏名或宏调用,请用百分号对百分号进行转义,也就是用两个百分号来表示一个百分号,如:
%let test = %str(%“%%%” is a special character!);
测试一下:
data _null_;
put “&test”;
run;
Log窗口是不是打印出来”%” is a special character!字样了呢?
%str和%nrstr对常量是有效的,如果是变量的话,%str和%nrstr则不会对变量的内容进行转义。这种情况下,我们需要%bquote和%nrbquote,这两个statement则专门在宏扩展之后,宏执行的时候对变量对应的内容进行转义,比如:
%let test = %str(%”%%);
%macro dd(h=);
data _null_;
%let a = %nrbquote(%substr(&h.,1,1));
put “&a.”;
run;
%mend dd;
%dd(h=&test.);
- SAS宏的特殊字符引用
- html中特殊字符引用
- html中特殊字符引用
- XML中一些字符拥有特殊的意义实体引用
- 特殊字符及其引用和转义
- html的特殊字符
- 特殊的空格字符
- html的特殊字符
- 特殊字符的处理
- shell的特殊字符
- 特殊字符的转义
- 特殊字符的分隔
- shell的特殊字符
- shell的特殊字符
- shell的特殊字符
- XML的特殊字符
- 特殊的空格字符
- shell的特殊字符
- Spring属性注入方式
- Dom4j解析XML
- 《老罗Android》学习之HTTP (三) POST提交数据
- 行为型模式2:备忘录模式
- window的客户端连接linux中的cvs服务器出现问题
- SAS宏的特殊字符引用
- java中的引用类型概念
- 通过Strace定位故障原因
- WINCE编程中的问题
- Broadcast receiver 动态注册 & 作为内部类接收广播 详解
- scikit-learn安装
- 双硬盘安装ubuntu的一点心得
- Web应用中页面跳转的路径问题
- MFC给主程序添加滚动条!