[英]how to concatenate string with special character in SAS
我正在嘗試連接以下兩個字符串:
String1 = /data/projects/flat_file/meteo/
String2 = *.json
在SAS我做這個代碼:
%let string1 = /data/projects/flat_file/meteo/;
%let string2 = %sysfunc(compress('*.json',"'"));
但是當我嘗試以這種方式將它們串聯時:
%let merge = %sysfunc(cats(&string1., &string2.));
沒用 當我嘗試放置時,我什么也看不到。 您有解決的辦法嗎?
您將使用*.json
進行注釋,請使用%str避免這種情況(這種壓縮是無用的)2個字符串之間的污染會生成一個/*
,它也是開始注釋的符號。
%let string1 = /data/projects/flat_file/meteo/;
%let string2 = %str(*.json);
%put &string1.;
%put &string2.;
%let merge = &string1.&string2;
%put &merge;
讓我知道您是否需要進一步說明。
如果您的日志中仍然顯示任何內容,是因為您的系統仍被鎖定在該注釋中,請運行以下代碼來“解鎖”您的sas系統:
*'; *"; *); */; %mend; run;
問題是您正在生成/ *序列,該序列指示塊注釋的開始。 因此,您需要引用其中一部分。 一個簡單的更改是使用%qsysfunc()而不是%sysfunc(),以便對結果字符串加引號。
%let string1 = /data/projects/flat_file/meteo/;
%let string2 = *.json ;
%let merge = %Qsysfunc(cats(&string1,&string2)) ;
但是,由於CATS()函數試圖確定其參數的數據類型,因此使用CATS()函數連接宏代碼中的字符串對於許多宏值而言效果不佳。 相反,您可以只使用普通的宏語法來連接並添加一些宏引用。 我發現對於這種類型的路徑分配,最容易引用除號/。 因此,請在路徑前保留斜杠,並在連接時將其添加回去。
%let path = /data/projects/flat_file/meteo ;
%let file = *.json ;
%let sep = %quote(/) ;
%let fullpath = &path.&sep.&file;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.