mirror of
https://github.com/sasjs/core.git
synced 2025-12-10 14:04:36 +00:00
50 lines
1.3 KiB
SAS
50 lines
1.3 KiB
SAS
/**
|
|
@file mf_trimstr.sas
|
|
@brief Removes character(s) from the end, if they exist
|
|
@details If the designated characters exist at the end of the string, they
|
|
are removed
|
|
|
|
%put %mf_trimstr(/blah/,/); * /blah;
|
|
%put %mf_trimstr(/blah/,h); * /blah/;
|
|
%put %mf_trimstr(/blah/,h/);* /bla;
|
|
|
|
<h4> SAS Macros </h4>
|
|
|
|
|
|
@param [in] basestr The string to be modified
|
|
@param [in] trimstr The string to be removed from the end of `basestr`, if it
|
|
exists
|
|
|
|
@return output returns result with the value of `trimstr` removed from the end
|
|
|
|
|
|
@version 9.2
|
|
@author Allan Bowe
|
|
|
|
**/
|
|
|
|
%macro mf_trimstr(basestr,trimstr);
|
|
%local baselen trimlen trimval;
|
|
|
|
/* return if basestr is shorter than trimstr (or 0) */
|
|
%let baselen=%length(%superq(basestr));
|
|
%let trimlen=%length(%superq(trimstr));
|
|
%if &baselen < &trimlen or &baselen=0 %then %return;
|
|
|
|
/* obtain the characters from the end of basestr */
|
|
%let trimval=%qsubstr(%superq(basestr)
|
|
,%length(%superq(basestr))-&trimlen+1
|
|
,&trimlen);
|
|
|
|
/* compare and if matching, chop it off! */
|
|
%if %superq(basestr)=%superq(trimstr) %then %do;
|
|
%return;
|
|
%end;
|
|
%else %if %superq(trimval)=%superq(trimstr) %then %do;
|
|
%qsubstr(%superq(basestr),1,%length(%superq(basestr))-&trimlen)
|
|
%end;
|
|
%else %do;
|
|
&basestr
|
|
%end;
|
|
|
|
%mend mf_trimstr; |