我不记得SAS是如何处理这些特殊字符的。任何内置函数?
E.g
a = New Year's Day
,我应该使用类似index(a, 'New Year's Day') > 0
的内容吗?
答案 0 :(得分:6)
这个问题的关键是用引号掩盖撇号。如果您希望查找单个撇号的出现,可以用双撇号掩盖它:
寻找单撇号
data _NULL_;
a="New Year's Day";
b=index(a,"'");
put b=;
run;
单个撇号作为第二个参数传递给索引函数,使用双引号。
寻找双引号
data _NULL_;
a='They said, "Happy New Year!"';
b=index(a,'"');
put b=;
run;
这一次,双引号在传递给索引函数
时设置在单引号内答案 1 :(得分:3)
"
(例如,您需要阻止宏变量解析),您可以将撇号加倍:
data _null_;
a='MerryXmas&HappyNewYear''s'; *here need single quotes or a macro quoting function;
b=find(a,"'"); *here do not need to mask ampersand resolution;
run;
当然你也可以使用%nrstr
来避免解决问题,但有些情况下偶尔需要这样做。这与""
类似(两个""
成为一个字符"
)。
答案 2 :(得分:1)
使用“查找”命令,如下所示,找出你在寻找的是否在字符串中。如果返回的值大于> 0 然后是撇号或者你正在寻找的任何东西,否则不是。
Teststring - 你想看的地方
Teststring旁边是“'” - 引用你在寻找什么,在 你的案例撇号
data _null_;
TestString="New year's day";
IsItThere=find(TestString,"'");
put IsItThere=;
run;
http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a002267763.htm