Mercurial > hg > octave-nkf
diff scripts/strings/strtrunc.m @ 5674:86adc85cc471
[project @ 2006-03-16 03:46:45 by jwe]
author | jwe |
---|---|
date | Thu, 16 Mar 2006 03:46:45 +0000 |
parents | |
children | 34f96dd5441b |
line wrap: on
line diff
new file mode 100644 --- /dev/null +++ b/scripts/strings/strtrunc.m @@ -0,0 +1,54 @@ +## Copyright (C) 2006 William Poetra Yoga Hadisoeseno +## +## 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, Inc., 51 Franklin Street, Fifth Floor, Boston, MA +## 02110-1301, USA. + +## -*- texinfo -*- +## @deftypefn {Function File} {} strtrunc (@var{s}, @var{n}) +## Truncate the character string @var{s} to length @var{n}. If @var{s} +## is a char matrix, then the number of columns are adjusted. +## +## If @var{s} is a cell array of strings, then the operation is performed +## on its members and the new cell array is returned. +## @end deftypefn + +function s = strtrunc (s, n) + + if (nargin != 2) + usage ("strtrunc (s, n)"); + endif + + if (ischar (s)) + s_was_char = true; + s = {s}; + else + s_was_char = false; + endif + + if (iscellstr (s)) + for i = 1:(numel (s)) + s{i} = s{i}(:,1:(min (n, columns (s{i})))); + endfor + else + error ("strtrunc: s must be a character string or a cell array of strings"); + endif + + if (s_was_char) + s = s{:}; + endif + +endfunction