Mercurial > hg > camir-aes2014
diff toolboxes/bioakustik_tools/strings/substr.m @ 0:e9a9cd732c1e tip
first hg version after svn
author | wolffd |
---|---|
date | Tue, 10 Feb 2015 15:05:51 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/toolboxes/bioakustik_tools/strings/substr.m Tue Feb 10 15:05:51 2015 +0000 @@ -0,0 +1,60 @@ +function outstr = substr(str, offset, len, repl) +%SUBSTR Extract a substring out of a string. +% +% SUBSTR(STRING, OFFSET, LENGTH) extracts a substring out of STRING with +% given LENGTH starting at the given OFFSET. First character is at offset 0. +% If OFFSET is negative, starts that far from the end of the string. If +% LENGTH is omitted, returns everything to the end of the string. If LENGTH +% is negative, removes that many characters from the end of the string. +% +% SUBSTR(STRING, OFFSET, LENGTH, REPLACEMENT) will not return the substring +% as specified by STRING, OFFSET, and LENGTH (see above) but rather replace +% it by REPLACEMENT and return the result. +% +% Examples: +% +% Get first character: substr(string, 0, 1) +% Get last character: substr(string, -1, 1) +% Remove first character: substr(string, 1) +% Remove last character: substr(string, 0, -1) +% Remove first and last character: substr(string, 1, -1) +% +% SUBSTR is a MATLAB version of the Perl operator with the same name. +% However, unlike Perl's SUBSTR, no warning is produced if the substring is +% totally outside the string. + +% Author: Peter J. Acklam +% Time-stamp: 2004-02-21 22:49:14 +0100 +% E-mail: pjacklam@online.no +% URL: http://home.online.no/~pjacklam + + % Check number of input arguments. + error(nargchk(2, 4, nargin)); + + n = length(str); + + % Get lower index. + lb = offset + 1; % offset from beginning of string + if offset < 0 + lb = lb + n; % offset from end of string + end + lb = max(lb, 1); + + % Get upper index. + if nargin == 2 % SUBSTR(STR, OFFSET) + ub = n; + elseif nargin > 2 % SUBSTR(STR, OFFSET, LEN) + if len >= 0 + ub = lb + len - 1; + else + ub = n + len; + end + ub = min(ub, n); + end + + % Extract or replace substring. + if nargin < 4 + outstr = str(lb : ub); % extract substring + else + outstr = [str(1:lb-1) repl str(ub+1:end)]; % replace substring + end