mirror of
https://github.com/sasjs/core.git
synced 2025-12-10 14:04:36 +00:00
55 lines
1.3 KiB
SAS
Executable File
55 lines
1.3 KiB
SAS
Executable File
/**
|
|
@file
|
|
@brief Returns words that are in string 1 but not in string 2
|
|
@details Compares two space separated strings and returns the words that are
|
|
in the first but not in the second.
|
|
|
|
Note - case sensitive!
|
|
|
|
Usage:
|
|
|
|
%let x= %mf_wordsInStr1ButNotStr2(
|
|
Str1=blah sss blaaah brah bram boo
|
|
,Str2= blah blaaah brah ssss
|
|
);
|
|
|
|
returns:
|
|
> sss bram boo
|
|
|
|
@param [in] str1= () String containing words to extract
|
|
@param [in] str2= () Used to compare with the extract string
|
|
|
|
@version 9.2
|
|
@author Allan Bowe
|
|
|
|
**/
|
|
|
|
%macro mf_wordsInStr1ButNotStr2(
|
|
Str1= /* string containing words to extract */
|
|
,Str2= /* used to compare with the extract string */
|
|
)/*/STORE SOURCE*/;
|
|
|
|
%local count_base count_extr i i2 extr_word base_word match outvar;
|
|
%if %length(&str1)=0 or %length(&str2)=0 %then %do;
|
|
%put base string (str1)= &str1;
|
|
%put compare string (str2) = &str2;
|
|
%return;
|
|
%end;
|
|
%let count_base=%sysfunc(countw(&Str2));
|
|
%let count_extr=%sysfunc(countw(&Str1));
|
|
|
|
%do i=1 %to &count_extr;
|
|
%let extr_word=%scan(&Str1,&i,%str( ));
|
|
%let match=0;
|
|
%do i2=1 %to &count_base;
|
|
%let base_word=%scan(&Str2,&i2,%str( ));
|
|
%if &extr_word=&base_word %then %let match=1;
|
|
%end;
|
|
%if &match=0 %then %let outvar=&outvar &extr_word;
|
|
%end;
|
|
|
|
&outvar
|
|
|
|
%mend mf_wordsInStr1ButNotStr2;
|
|
|