data test;
set varin;
found=findw('Art festival.','art','','it');
put found=;
run;
The above code is returning the value of found as 0. Anybody knows why? Even though I am ignoring case and removing trailing blanks from the arguments. If I remove the 't' modifier, the value is returned correctly as 1. If I use STRIP function on the second argument, the value is again returned correctly.
Thanks for the help.
Probably because it ends up trimming the space out of the list of delimiter characters. Add 'S' to the modifiers. Or add other characters such as period and comma to the list of delimiter characters.. Also making the list of delimiters a variable instead of an in-line character constant seems to also make it work.
It says in the the docu:
So it appears trimming the character argument removes blanks from the list of word delimiters. Initially not really intuitive to me but then with a bit more thinking isn't this exactly what I would expect to happen if passing in a variable as character argument? So using the 't' switch with an explicit string as character argument is definitely not the right thing to do.
data _null_;
found1=findw('Art festival.','art',' ','it');
found2=findw('Art festival.','art','','i');
found3=findw('Art|festival.','art','|','it');
put _all_;
stop;
run;
found1=0 found2=1 found3=1
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.
Learn the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.
Find more tutorials on the SAS Users YouTube channel.