repstr.pro
来自「basic median filter simulation」· PRO 代码 · 共 80 行
PRO
80 行
function repstr,obj,in,out;+; NAME:; REPSTR; PURPOSE:; Replace all occurences of one substring by another.; EXPLANATION:; Meant to emulate the string substitution capabilities of text editors;; For a more sophisticated routine that allows regular expressions look; at STR_REPLACE() http://www.ittvis.com/codebank/search.asp?FID=311; CALLING SEQUENCE:; result = repstr( obj, in, out );; INPUT PARAMETERS:; obj = object string for editing, scalar or array; in = substring of 'obj' to be replaced, scalar ;; OPTIONAL INPUT PARMETER:; out = what 'in' is replaced with, scalar. If not supplied; then out = '', i.e. 'in' is not replaced by anything. ;; OUTPUT PARAMETERS:; Result returned as function value. Input object string; not changed unless assignment done in calling program.;; PROCEDURE:; Searches for 'in', splits 'obj' into 3 pieces, reassembles; with 'out' in place of 'in'. Repeats until all cases done.;; EXAMPLE:; If a = 'I am what I am' then print,repstr(a,'am','was'); will give 'I was what I was'.;; MODIFICATION HISTORY:; Written by Robert S. Hill, ST Systems Corp., 12 April 1989.; Accept vector object strings, W. Landsman HSTX, April, 1996; Converted to IDL V5.0 W. Landsman September 1997; Convert loop to LONG, vectorize STRLEN call W. Landsman June 2002; Correct bug in optimization, case where STRLEN(OBJ) EQ; STRLEN(IN), C. Markwardt, Jan 2003; Fixed problem when multiple replacements extend the string length; D. Finkbeiner, W. Landsman April 2003; Allow third parameter to be optional again W. Landsman August 2003; Remove limitation of 9999 characters, C. Markwardt Dec 2003;- On_error,2 compile_opt idl2 if N_params() LT 2 then begin print,'Syntax - result = REPSTR( obj, in, out )' return, obj endif if N_elements(out) EQ 0 then out = '' l1 = strlen(in) l2 = strlen(out) diflen = l2- l1 Nstring = N_elements(obj) object = obj lo = strlen(object) - l1 ;Last character needed to look at for i= 0L ,Nstring-1 do begin last_pos = 0 pos = 0 while ( pos LE lo[i]) and (pos GE 0) do begin pos = strpos(object[i],in,last_pos) if (pos GE 0) then begin first_part = strmid(object[i],0,pos) last_part = strmid(object[i],pos+l1) object[i] = first_part + out + last_part endif last_pos = pos + l2 lo[i] = lo[i] + diflen ;Length of string may have changed endwhile endfor return,object end
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?