总之,我正在努力实现以下目标:
data _null_;
input x $ 1-50 ;
call symput('problem',x);
cards4;
'this' "is '' my "string"" from 'hell!
;;;;
run;
data _null_;
x="%superQ(problem)";
put x=;
run;
superq函数可以很好地管理不匹配的引号,但是连续的引号(“”)仍然被解析为变量X中的单引号。
这可以解决吗?
目前的结果:
x='this' "is '' my "string" from 'hell!
期望的结果:
x='this' "is '' my "string"" from 'hell!
答案 0 :(得分:3)
简短的回答是你可以在这里使用SYMGET:
data _null_;
x=symget("problem");
put x=;
run;
如果由于某种原因这不是一个选项,请提供有关上下文的更多信息。我还会看看是否可以指出Toby(SAS-L宏引用大师)或其他一些人在这里,看看他们是否有任何建议在没有SYMGET的情况下处理这个问题。
来自SAS-L,FriedEgg(马特)发布了以下额外解决方案:
resolve=resolve('%superq(problem)');
他还指出,如果你能控制它,你可以在途中掩饰它:
data _null_;
input x $ 1-50 ;
call symput('problem',quote(x));
cards4;
'this' "is '' my "string"" from 'hell!
;;;;
run;
data _null_;
x=&problem;
put x=;
run;