如何检查字符串是否包含撇号

时间:2014-12-18 06:44:15

标签: sas

我不记得SAS是如何处理这些特殊字符的。任何内置函数?

E.g

a = New Year's Day,我应该使用类似index(a, 'New Year's Day') > 0的内容吗?

3 个答案:

答案 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)

mjsqu和NeoMental很好地涵盖了基本情况,但在特殊情况下,您无法使用"(例如,您需要阻止宏变量解析),您可以将撇号加倍:

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