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;
April 27 – 30 | Gaylord Texan | Grapevine, Texas
Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and lock in 2025 pricing—just $495!
Still thinking about your presentation idea? The submission deadline has been extended to Friday, Nov. 14, at 11:59 p.m. ET.
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.
Ready to level-up your skills? Choose your own adventure.