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