; $Id: escape.pro,v 1.4 2005/09/26 11:42:14 Harald Exp $ FUNCTION Escape, expression, search, esc, UNDO=undo CATCH, error IF (error NE 0) THEN BEGIN MESSAGE, !ERROR_STATE.MSG, /CONTINUE RETURN, expression ENDIF IF (N_PARAMS() LT 2) THEN $ MESSAGE, 'Usage: result = Escape(str, char [, esc])', /NONAME IF (N_ELEMENTS(esc) EQ 0) THEN $ esc = '\' IF (search EQ '') THEN $ MESSAGE, 'Missing characters to escape.', /NONAME IF (KEYWORD_SET(undo)) THEN BEGIN regex = '[' + esc + '][' + search + ']' fmtex = '(A,:,""))' ENDIF ELSE BEGIN regex = '[' + search + ']' fmtex = '(A,:,"' + esc + '"))' ENDELSE result = expression FOR i = 0, N_ELEMENTS(result) - 1 DO BEGIN pos = STRSPLIT(result[i], regex, /REGEX, LEN=len, /PRESERVE) cnt = N_ELEMENTS(pos) IF (cnt GT 0) THEN BEGIN IF (cnt GT 1) THEN BEGIN pos[1:*] = pos[1:*] - 1 len[1:*] = len[1:*] + 1 ENDIF format = '(' + STRTRIM(cnt,2) + fmtex result[i] = STRING(STRMID(result[i], pos, len), FORMAT=format) ENDIF ENDFOR RETURN, result END ; Escape