1

在 SAS 中,在数据步骤之外,用空白替换宏变量中的字符的最佳方法是什么?

这似乎TRANSLATE是一个很好的功能。但是,当%SYSFUNC与此函数一起使用时,参数不会用引号括起来。您如何表示应使用空白作为替换?

4

3 回答 3

5

%str( )(括号之间有一个空格)可用于指示此参数的空格。还要小心翻译...第二个参数是替换字符...但是在 TRANWRD 中它是相反的。

    %macro test ;
     %let original= translate_this_var ;
     %let replaceWithThis= %str( ) ;
     %let findThis= _ ;
     %let translated= %sysfunc(translate(&original, &replaceWithThis, &findThis)) ;
     %put Original: &original ***** TRANSLATEd: &translated ;
    %mend ;
    %test;

    %macro test2 ;
     %let original= translate_this_var ;
     %let replaceWithThis= %str( ) ;
     %let findThis= _ ;
     %let tranwrded= %sysfunc(tranwrd(&original, &findThis, &replaceWithThis)) ;
     %put Original: &original ***** TRANWRDed: &tranwrded ;
    %mend ;
    %test2
于 2009-02-06T17:20:23.813 回答
4

宏语言中没有引号。唯一使用的引号字符是&%,表示文本应被解释为宏“操作符”。%str( )如上Carolina的帖子中所示,空白表示为。

于 2009-02-11T09:29:48.260 回答
3

您可以改用 perl reg ex,例如:

%put ***%sysfunc(prxchange(s/x/ /, -1, abxcdxxf))***;
/* on log
***ab cd  f***
*/
于 2009-02-22T04:39:50.477 回答