BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
kalbo
Obsidian | Level 7

Hi I would like to remove brackets plus any text inside, for example:

 

have:

VAR1

text(where=(upcase(num)="A"))

text text (in=a)

text (in=a) text2 (where=(upcase(strip(var1))))

 

want:

VAR1

text

text text

text text2

 

thanks for your help

1 ACCEPTED SOLUTION

Accepted Solutions
PeterClemmensen
Tourmaline | Level 20

Just for fun

 

data have;
input var1 $ 1 - 50;
datalines;
text(where=(upcase(num)="A"))                   
text text (in=a)                                
text (in=a) text2 (where=(upcase(strip(var1)))) 
;

data want;

   set have;
   
   do i = 1 to length(var1);
   
      if char(var1, i) = "(" then do;
         c = 0;
         do j = i to length(var1);
            if char(var1, j) = "(" then c ++ 1;
            if char(var1, j) = ")" then c +- 1;
            substr(var1, j, 1) = "";
            if c = 0 then leave;
         end;
      end;
   end;
   
   var1 = compbl(var1);

run;

View solution in original post

2 REPLIES 2
FreelanceReinh
Jade | Level 19

Hi @kalbo,

 

If those "brackets" are only balanced parentheses, try a recursive approach like this:

data have;
input var1 $80.;
datalines;
text(where=(upcase(num)="A"))
text text (in=a)
text (in=a) text2 (where=(upcase(strip(var1))))
;

data want(drop=_:);
set have;
do until(var1=_var1);
  _var1=var1;
  var1=compbl(prxchange('s/\([^()]*\)//',-1,var1));
end;
run;
PeterClemmensen
Tourmaline | Level 20

Just for fun

 

data have;
input var1 $ 1 - 50;
datalines;
text(where=(upcase(num)="A"))                   
text text (in=a)                                
text (in=a) text2 (where=(upcase(strip(var1)))) 
;

data want;

   set have;
   
   do i = 1 to length(var1);
   
      if char(var1, i) = "(" then do;
         c = 0;
         do j = i to length(var1);
            if char(var1, j) = "(" then c ++ 1;
            if char(var1, j) = ")" then c +- 1;
            substr(var1, j, 1) = "";
            if c = 0 then leave;
         end;
      end;
   end;
   
   var1 = compbl(var1);

run;
How to Concatenate Values

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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 2 replies
  • 1202 views
  • 4 likes
  • 3 in conversation