Mercurial > octave
view scripts/strings/strrep.m @ 3361:4f40efa995c1
[project @ 1999-11-19 21:19:37 by jwe]
author | jwe |
---|---|
date | Fri, 19 Nov 1999 21:19:44 +0000 |
parents | c17387059fd3 |
children | f8dde1807dee |
line wrap: on
line source
## Copyright (C) 1995, 1996 Kurt Hornik ## ## This file is part of Octave. ## ## Octave is free software; you can redistribute it and/or modify it ## under the terms of the GNU General Public License as published by ## the Free Software Foundation; either version 2, or (at your option) ## any later version. ## ## Octave is distributed in the hope that it will be useful, but ## WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ## General Public License for more details. ## ## You should have received a copy of the GNU General Public License ## along with Octave; see the file COPYING. If not, write to the Free ## Software Foundation, 59 Temple Place - Suite 330, Boston, MA ## 02111-1307, USA. ## -*- texinfo -*- ## @deftypefn {Function File} {} strrep (@var{s}, @var{x}, @var{y}) ## Replaces all occurrences of the substring @var{x} of the string @var{s} ## with the string @var{y}. For example, ## ## @example ## strrep ("This is a test string", "is", "&%$") ## @result{} "Th&%$ &%$ a test string" ## @end example ## @end deftypefn ## Author: Kurt Hornik <Kurt.Hornik@ci.tuwien.ac.at> ## Created: 11 November 1994 ## Adapted-By: jwe function t = strrep (s, x, y) if (nargin <> 3) usage ("strrep (s, x, y)"); endif if (! (isstr (s) && isstr (x) && isstr (y))) error ("strrep: all arguments must be strings"); endif if (length (x) > length (s) || isempty (x)) t = s; return; endif ind = findstr (s, x, 0); len = length (ind); if (len == 0) t = s; else save_empty_list_elements_ok = empty_list_elements_ok; unwind_protect empty_list_elements_ok = 1; l_x = length (x); tmp = s (1 : ind (1) - 1); t = strcat (tmp, y); for k = 1 : len - 1 tmp = s (ind (k) + l_x : ind (k+1) - 1); t = strcat (t, tmp, y); endfor tmp = s (ind(len) + l_x : length (s)); t = [t, tmp]; unwind_protect_cleanup empty_list_elements_ok = save_empty_list_elements_ok; end_unwind_protect endif endfunction