在數據步驟之外的SAS中,用空格替換宏變量中的字符的最佳方法是什麼?在數據步驟之外的SAS中,用空白替換宏變量中的字符的最佳方法是什麼?
看來,TRANSLATE
將是一個很好的功能使用。但是,使用此功能使用%SYSFUNC
時,參數未用引號括起來。你如何表示應該使用空白作爲替換?
在數據步驟之外的SAS中,用空格替換宏變量中的字符的最佳方法是什麼?在數據步驟之外的SAS中,用空白替換宏變量中的字符的最佳方法是什麼?
看來,TRANSLATE
將是一個很好的功能使用。但是,使用此功能使用%SYSFUNC
時,參數未用引號括起來。你如何表示應該使用空白作爲替換?
宏語言中沒有引號。唯一正在使用的引號字符是&
,%
等,表示文本應該被解釋爲宏「運算符」。如上文在Carolina的帖子中所示,空白由%str()
表示。
可以使用%str()(在parens之間有一個空白)來指示此參數的空白。還要小心翻譯......第二個參數是替換字符......但是在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
您可以使用Perl REG前代替,如:
%put ***%sysfunc(prxchange(s/x/ /, -1, abxcdxxf))***;
/* on log
***ab cd f***
*/