Mercurial > hg > octave-lyh
diff scripts/strings/deblank.m @ 13162:4e92b71dcc97
deblank.m: Modified to accept nested cellstr arrays (Bug #34123)
* deblank.m: Divide work between regexprep on string portions of input
and recursive cellfun call on cell elements.
author | Rik <octave@nomad.inbox5.com> |
---|---|
date | Mon, 19 Sep 2011 09:37:52 -0700 |
parents | 4ec4096f65d1 |
children | 9cae456085c2 |
line wrap: on
line diff
--- a/scripts/strings/deblank.m +++ b/scripts/strings/deblank.m @@ -54,9 +54,18 @@ s = s(:,1:ceil (max (k) / rows (s))); endif - elseif (iscellstr (s)) + elseif (iscell (s)) - s = regexprep (s, "[\\s\v\\0]+$", ''); + char_idx = cellfun ("isclass", s, "char"); + cell_idx = cellfun ("isclass", s, "cell"); + if (! all (char_idx | cell_idx)) + error ("deblank: S argument must be a string or cellstring"); + endif + + ## Divide work load. Recursive cellfun deblank call is slow + ## and avoided where possible. + s(char_idx) = regexprep (s(char_idx), "[\\s\v\\0]+$", ''); + s(cell_idx) = cellfun ("deblank", s(cell_idx), "UniformOutput", false); else error ("deblank: S argument must be a string or cellstring"); @@ -65,11 +74,12 @@ endfunction -%!assert (strcmp (deblank (" f o o \0"), " f o o")); -%!assert (deblank (' '), '') -%!assert (deblank (" "), "") -%!assert (deblank (""), "") -%!assert (deblank ({}), {}) +%!assert (deblank (" f o o \0"), " f o o"); +%!assert (deblank (' '), ''); +%!assert (deblank (" "), ""); +%!assert (deblank (""), ""); +%!assert (deblank ({}), {}); +%!assert (deblank ({" abc ", {" def "}}), {" abc", {" def"}}); %!error <Invalid call to deblank> deblank (); %!error <Invalid call to deblank> deblank ("foo", "bar");