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

Sas 如何检查字符串是否包含撇号,sas,Sas,我不记得SAS是如何处理这些特殊角色的。有内置的功能吗 例如 a=元旦,我是否应该使用indexa、'New Year's Day'>0之类的命令?使用下面的find命令来查找字符串中是否有您要查找的内容。如果返回的值大于>0,则撇号或您要查找的任何内容都存在,否则不存在 Teststring—您希望查看的位置 Teststring旁边的引号中是“-您在寻找什么 你的案例撇号 使用下面的find命令来查找字符串中是否有您要查找的内容。如果返回的值大于>0,则撇号或您要查找的任何内容都存在,否则不

我不记得SAS是如何处理这些特殊角色的。有内置的功能吗

例如

a=元旦,我是否应该使用indexa、'New Year's Day'>0之类的命令?

使用下面的find命令来查找字符串中是否有您要查找的内容。如果返回的值大于>0,则撇号或您要查找的任何内容都存在,否则不存在

Teststring—您希望查看的位置

Teststring旁边的引号中是“-您在寻找什么 你的案例撇号

使用下面的find命令来查找字符串中是否有您要查找的内容。如果返回的值大于>0,则撇号或您要查找的任何内容都存在,否则不存在

Teststring—您希望查看的位置

Teststring旁边的引号中是“-您在寻找什么 你的案例撇号


这个问题的关键是在引号中隐藏撇号。如果希望查找单个撇号的出现,可以使用双撇号将其隐藏:

寻找单撇号

使用双引号将单撇号作为第二个参数传递给index函数

寻找双引号


这一次,当传递给索引函数时,双引号被设置在单引号内。这个问题的关键是引号中省略号的屏蔽。如果希望查找单个撇号的出现,可以使用双撇号将其隐藏:

寻找单撇号

使用双引号将单撇号作为第二个参数传递给index函数

寻找双引号


这一次,当传递到索引函数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来避免解析,但在现实生活中,有时需要这样做。这同样适用于两个变为一个字符。

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来避免解析,但在现实生活中,有时需要这样做。这同样适用于两个变为一个字符。

是否要检查字符串是否包含撇号?是否要检查字符串是否包含撇号?
data _NULL_;
  a='They said, "Happy New Year!"';
  b=index(a,'"');
  put b=;
run;
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;