In SAS, außerhalb eines Datums Schritt, was ist der beste Weg, um ein Zeichen in einem Makro-Variable mit einem leeren zu ersetzen?
Frage
In SAS, außerhalb eines Datums Schritt, was ist der beste Weg, um ein Zeichen in einem Makro-Variable mit einem leeren zu ersetzen?
Es scheint, dass TRANSLATE
eine gute Funktion zu nutzen wäre. Jedoch bei der Verwendung von %SYSFUNC
mit dieser Funktion werden die Parameter nicht mit Anführungszeichen umgeben. Wie zeigen Sie ein leeres soll als Ersatz verwendet werden?
Lösung
Es gibt keine Zitate in Makrosprache. Die einzigen Anführungszeichen Zeichen, die in Gebrauch sind, sind die &
, %
usw., um anzuzeigen, dass der Text als Makro „Operator“ interpretiert werden soll. Ein Rohling wird durch %str( )
dargestellt, wie oben in Carolina Post angegeben.
Andere Tipps
% str () (mit Leerzeichen zwischen dem Pars) verwendet werden, um einen Rohling für diesen Parameter anzuzeigen. vorsichtig sein, auch mit UEBER ... die 2. param einwechseln char ist ... aber in TRANWRD es umgekehrt ist.
%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
Sie verwenden können Perl reg ex statt, wie:
%put ***%sysfunc(prxchange(s/x/ /, -1, abxcdxxf))***;
/* on log
***ab cd f***
*/