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
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/scripts/strings/strtrunc.m	Thu Mar 16 03:46:45 2006 +0000
@@ -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