function str_pick, text, char1, char2, inc_first=inc_first, inc_last=inc_last

;
;  parameter checks
;
if n_params() eq 0 then begin
   print,'Use:  text = str_pick(string, char_left, char_right)
   return,''
endif

if n_params() eq 1 then begin
   char1 = ' ' & char2 = ' '
endif

;
;  allow array input/output
;
outs = strarr(n_elements(text))
p1 = -1
p2 = -1
for i=0L,n_elements(text)-1 do begin

;
;  easy if only left hand character is given
;
   case 1 of
      n_params() eq 2: begin
         p1 = strpos(text(i),char1)
         if p1 ge 0 then begin
            outs(i) = strmid(text(i),p1+strlen(char1),strlen(text(i))) 
         endif else begin
            outs(i) = ''
         endelse
      end

;
;  if both search characters are the same then pick the substring between
;  the first and second occurrence
;
   char1 eq char2: begin
      p1 = strpos(text(i),char1)
      if p1 eq -1 then begin
         outs(i) = ''
      endif else begin
         p2 = strpos(text(i),char2,p1+1)
         if p2 eq -1 then p2 = strlen(text(i))
         outs(i) = strmid(text(i),p1+strlen(char1),(p2-p1-strlen(char1)))
      endelse
   end

;
;  two different characters specified so search for them
;
   else: begin
      p1 = strpos(text(i),char1)
      if p1 eq -1 then begin 
         outs(i) = ''
      endif else begin
         p2 = strpos(text(i),char2,p1+1)
         if p2 eq -1 then begin
            outs(i) = ''
         endif else begin
            outs(i) = strmid(text(i),p1+strlen(char1),p2-p1-strlen(char1))
         endelse
      endelse
   end
   endcase
endfor

;
;  check wrappers
;
if keyword_set(inc_first) then outs = char1+outs
if keyword_set(inc_last)  then outs = outs+char2

if n_elements(outs) eq 1 then return,outs(0) else return,outs

end