How can I remove only the 2nd space in a string?
data _null_; x='xxx yyy zzz'; call scan(x,3,p,l,' '); want=substr(x,1,p-2)||substr(x,p); put x= want=; run;
There may be easier ways.
It may be that this is not what you really want. Remember, you are only shifting text over since the length of a character variable is fixed.
You may be better served by the COMPBL function.
WIth all that in mind, here is a way to approach what you asked for:
data want;
set have;
blanks=0;
if string > ' ' then do i=1 to length(string) until (blanks=2);
if substr(string, i, 1)=' ' then blanks + 1;
end;
if blanks=2 then string = substr(string, 1, i-1) || substr(string, i+1);
run;
I also tried looking at CALL SCAN, but didn't find an approach that seemed like it would work.
Given the string
AsBsCssD
where s is a space, do you want
AsBCssD (second space of the string removed)
or
AsBsCsD (double space replaced by single space) ?
What does "2nd space" mean? The 2nd occurence of a space or just don't have consecutive spaces?
For "not consecutive spaces" I'd use function "compbl()"
data _null_; x='xxx yyy zzz'; call scan(x,3,p,l,' '); want=substr(x,1,p-2)||substr(x,p); put x= want=; run;
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 how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.