annotate scripts/strings/strsplit.m @ 16727:3ce3579405f8

Remove the "legacy" delimiter type from strsplit(). * strings/strsplit.m: Since ostrstplit.m has been added to Octave, remove the support for the "legacy" delimiter type from strsplit(). Bug #39010.
author Ben Abbott <bpabbott@mac.com>
date Thu, 06 Jun 2013 11:03:22 +0800
parents 9ce08a1efc29
children 7268845c0a1e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
14138
72c96de7a403 maint: update copyright notices for 2012
John W. Eaton <jwe@octave.org>
parents: 13929
diff changeset
1 ## Copyright (C) 2009-2012 Jaroslav Hajek
8877
2c8b2399247b implement strsplit; deprecate split
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
2 ##
11104
2c356a35d7f5 fix copyright notices
John W. Eaton <jwe@octave.org>
parents: 8884
diff changeset
3 ## This file is part of Octave.
2c356a35d7f5 fix copyright notices
John W. Eaton <jwe@octave.org>
parents: 8884
diff changeset
4 ##
2c356a35d7f5 fix copyright notices
John W. Eaton <jwe@octave.org>
parents: 8884
diff changeset
5 ## Octave is free software; you can redistribute it and/or modify it
8877
2c8b2399247b implement strsplit; deprecate split
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
6 ## under the terms of the GNU General Public License as published by
2c8b2399247b implement strsplit; deprecate split
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
7 ## the Free Software Foundation; either version 3 of the License, or (at
2c8b2399247b implement strsplit; deprecate split
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
8 ## your option) any later version.
2c8b2399247b implement strsplit; deprecate split
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
9 ##
11104
2c356a35d7f5 fix copyright notices
John W. Eaton <jwe@octave.org>
parents: 8884
diff changeset
10 ## Octave is distributed in the hope that it will be useful, but
8877
2c8b2399247b implement strsplit; deprecate split
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
11 ## WITHOUT ANY WARRANTY; without even the implied warranty of
2c8b2399247b implement strsplit; deprecate split
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
12 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
2c8b2399247b implement strsplit; deprecate split
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
13 ## General Public License for more details.
2c8b2399247b implement strsplit; deprecate split
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
14 ##
2c8b2399247b implement strsplit; deprecate split
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
15 ## You should have received a copy of the GNU General Public License
11104
2c356a35d7f5 fix copyright notices
John W. Eaton <jwe@octave.org>
parents: 8884
diff changeset
16 ## along with Octave; see the file COPYING. If not, see
8877
2c8b2399247b implement strsplit; deprecate split
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
17 ## <http://www.gnu.org/licenses/>.
2c8b2399247b implement strsplit; deprecate split
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
18
2c8b2399247b implement strsplit; deprecate split
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
19 ## -*- texinfo -*-
16403
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
20 ## @deftypefn {Function File} {[@var{cstr}] =} strsplit (@var{s})
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
21 ## @deftypefnx {Function File} {[@var{cstr}] =} strsplit (@var{s}, @var{del})
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
22 ## @deftypefnx {Function File} {[@var{cstr}] =} strsplit (@dots{}, @var{name}, @var{value})
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
23 ## @deftypefnx {Function File} {[@var{cstr}, @var{matches}] =} strsplit (@dots{})
16411
5be43435bd5b Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 16403
diff changeset
24 ## Split the string @var{s} using the delimiters specified by @var{del}
16727
3ce3579405f8 Remove the "legacy" delimiter type from strsplit().
Ben Abbott <bpabbott@mac.com>
parents: 16712
diff changeset
25 ## and return a cell-string array of sub-strings. If a delmiter is not
3ce3579405f8 Remove the "legacy" delimiter type from strsplit().
Ben Abbott <bpabbott@mac.com>
parents: 16712
diff changeset
26 ## specified the string, @var{s}, is split at whitespace. The delimiter,
3ce3579405f8 Remove the "legacy" delimiter type from strsplit().
Ben Abbott <bpabbott@mac.com>
parents: 16712
diff changeset
27 ## @var{del} may be a string, a scalar cell-string, or cell-string array.
3ce3579405f8 Remove the "legacy" delimiter type from strsplit().
Ben Abbott <bpabbott@mac.com>
parents: 16712
diff changeset
28 ## @var{del} must be a cell-string array. By default, consecutive
3ce3579405f8 Remove the "legacy" delimiter type from strsplit().
Ben Abbott <bpabbott@mac.com>
parents: 16712
diff changeset
29 ## delimiters in the input string, @var{s}, are collapsed into one.
13701
46e68badedb8 strsplit.m: Expand to accept 2-D character arrays. Improve input validation.
Rik <octave@nomad.inbox5.com>
parents: 12915
diff changeset
30 ##
16403
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
31 ## The second output, @var{matches}, returns the delmiters which were matched
16727
3ce3579405f8 Remove the "legacy" delimiter type from strsplit().
Ben Abbott <bpabbott@mac.com>
parents: 16712
diff changeset
32 ## in the original string.
13701
46e68badedb8 strsplit.m: Expand to accept 2-D character arrays. Improve input validation.
Rik <octave@nomad.inbox5.com>
parents: 12915
diff changeset
33 ##
46e68badedb8 strsplit.m: Expand to accept 2-D character arrays. Improve input validation.
Rik <octave@nomad.inbox5.com>
parents: 12915
diff changeset
34 ## Example:
13929
9cae456085c2 Grammarcheck of documentation before 3.6.0 release.
Rik <octave@nomad.inbox5.com>
parents: 13776
diff changeset
35 ##
13701
46e68badedb8 strsplit.m: Expand to accept 2-D character arrays. Improve input validation.
Rik <octave@nomad.inbox5.com>
parents: 12915
diff changeset
36 ## @example
13929
9cae456085c2 Grammarcheck of documentation before 3.6.0 release.
Rik <octave@nomad.inbox5.com>
parents: 13776
diff changeset
37 ## @group
16403
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
38 ## strsplit ("a b c")
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
39 ## @result{}
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
40 ## @{
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
41 ## [1,1] = a
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
42 ## [1,2] = b
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
43 ## [1,3] = c
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
44 ## @}
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
45 ##
13701
46e68badedb8 strsplit.m: Expand to accept 2-D character arrays. Improve input validation.
Rik <octave@nomad.inbox5.com>
parents: 12915
diff changeset
46 ## strsplit ("a,b,c", ",")
14327
4d917a6a858b doc: Use Octave coding conventions in @example blocks of docstrings.
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
47 ## @result{}
13701
46e68badedb8 strsplit.m: Expand to accept 2-D character arrays. Improve input validation.
Rik <octave@nomad.inbox5.com>
parents: 12915
diff changeset
48 ## @{
46e68badedb8 strsplit.m: Expand to accept 2-D character arrays. Improve input validation.
Rik <octave@nomad.inbox5.com>
parents: 12915
diff changeset
49 ## [1,1] = a
46e68badedb8 strsplit.m: Expand to accept 2-D character arrays. Improve input validation.
Rik <octave@nomad.inbox5.com>
parents: 12915
diff changeset
50 ## [1,2] = b
46e68badedb8 strsplit.m: Expand to accept 2-D character arrays. Improve input validation.
Rik <octave@nomad.inbox5.com>
parents: 12915
diff changeset
51 ## [1,3] = c
46e68badedb8 strsplit.m: Expand to accept 2-D character arrays. Improve input validation.
Rik <octave@nomad.inbox5.com>
parents: 12915
diff changeset
52 ## @}
46e68badedb8 strsplit.m: Expand to accept 2-D character arrays. Improve input validation.
Rik <octave@nomad.inbox5.com>
parents: 12915
diff changeset
53 ##
16403
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
54 ## strsplit ("a foo b,bar c", @{"\s", "foo", "bar"@})
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
55 ## @result{}
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
56 ## @{
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
57 ## [1,1] = a
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
58 ## [1,2] = b
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
59 ## [1,3] = c
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
60 ## @}
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
61 ##
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
62 ## strsplit ("a,,b, c", @{",", " "@}, false)
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
63 ## @result{}
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
64 ## @{
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
65 ## [1,1] = a
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
66 ## [1,2] =
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
67 ## [1,3] = b
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
68 ## [1,4] =
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
69 ## [1,5] = c
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
70 ## @}
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
71 ##
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
72 ## @end group
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
73 ## @end example
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
74 ##
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
75 ## Supported @var{name}/@var{value} pair arguments are;
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
76 ##
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
77 ## @itemize
16727
3ce3579405f8 Remove the "legacy" delimiter type from strsplit().
Ben Abbott <bpabbott@mac.com>
parents: 16712
diff changeset
78 ## @item @var{collapsedelimiters} may take the value of @var{true} or
3ce3579405f8 Remove the "legacy" delimiter type from strsplit().
Ben Abbott <bpabbott@mac.com>
parents: 16712
diff changeset
79 ## @var{false} with the default being @var{false}.
3ce3579405f8 Remove the "legacy" delimiter type from strsplit().
Ben Abbott <bpabbott@mac.com>
parents: 16712
diff changeset
80 ## @item @var{delimitertype} may take the value of @code{simple} or
3ce3579405f8 Remove the "legacy" delimiter type from strsplit().
Ben Abbott <bpabbott@mac.com>
parents: 16712
diff changeset
81 ## @code{regularexpression}. The default is @var{delimitertype} is
3ce3579405f8 Remove the "legacy" delimiter type from strsplit().
Ben Abbott <bpabbott@mac.com>
parents: 16712
diff changeset
82 ## @code{simple}.
16403
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
83 ## @end itemize
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
84 ##
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
85 ## Example:
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
86 ##
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
87 ## @example
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
88 ## @group
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
89 ## strsplit ("a foo b,bar c", ",|\\s|foo|bar", "delimitertype", "regularexpression")
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
90 ## @result{}
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
91 ## @{
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
92 ## [1,1] = a
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
93 ## [1,2] = b
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
94 ## [1,3] = c
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
95 ## @}
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
96 ##
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
97 ## strsplit ("a,,b, c", "[, ]", false, "delimitertype", "regularexpression")
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
98 ## @result{}
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
99 ## @{
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
100 ## [1,1] = a
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
101 ## [1,2] =
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
102 ## [1,3] = b
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
103 ## [1,4] =
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
104 ## [1,5] = c
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
105 ## @}
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
106 ##
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
107 ## strsplit ("a,\t,b, c", @{',', '\s'@}, "delimitertype", "regularexpression")
14327
4d917a6a858b doc: Use Octave coding conventions in @example blocks of docstrings.
Rik <octave@nomad.inbox5.com>
parents: 14138
diff changeset
108 ## @result{}
13701
46e68badedb8 strsplit.m: Expand to accept 2-D character arrays. Improve input validation.
Rik <octave@nomad.inbox5.com>
parents: 12915
diff changeset
109 ## @{
46e68badedb8 strsplit.m: Expand to accept 2-D character arrays. Improve input validation.
Rik <octave@nomad.inbox5.com>
parents: 12915
diff changeset
110 ## [1,1] = a
46e68badedb8 strsplit.m: Expand to accept 2-D character arrays. Improve input validation.
Rik <octave@nomad.inbox5.com>
parents: 12915
diff changeset
111 ## [1,2] = b
16403
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
112 ## [1,3] = c
13701
46e68badedb8 strsplit.m: Expand to accept 2-D character arrays. Improve input validation.
Rik <octave@nomad.inbox5.com>
parents: 12915
diff changeset
113 ## @}
16727
3ce3579405f8 Remove the "legacy" delimiter type from strsplit().
Ben Abbott <bpabbott@mac.com>
parents: 16712
diff changeset
114 ##
3ce3579405f8 Remove the "legacy" delimiter type from strsplit().
Ben Abbott <bpabbott@mac.com>
parents: 16712
diff changeset
115 ## strsplit ("a,\t,b, c", @{',', ' ', '\t'@}, "collapsedelimiters", false)
3ce3579405f8 Remove the "legacy" delimiter type from strsplit().
Ben Abbott <bpabbott@mac.com>
parents: 16712
diff changeset
116 ## @result{}
3ce3579405f8 Remove the "legacy" delimiter type from strsplit().
Ben Abbott <bpabbott@mac.com>
parents: 16712
diff changeset
117 ## @{
3ce3579405f8 Remove the "legacy" delimiter type from strsplit().
Ben Abbott <bpabbott@mac.com>
parents: 16712
diff changeset
118 ## [1,1] = a
3ce3579405f8 Remove the "legacy" delimiter type from strsplit().
Ben Abbott <bpabbott@mac.com>
parents: 16712
diff changeset
119 ## [1,2] =
3ce3579405f8 Remove the "legacy" delimiter type from strsplit().
Ben Abbott <bpabbott@mac.com>
parents: 16712
diff changeset
120 ## [1,3] =
3ce3579405f8 Remove the "legacy" delimiter type from strsplit().
Ben Abbott <bpabbott@mac.com>
parents: 16712
diff changeset
121 ## [1,4] = b
3ce3579405f8 Remove the "legacy" delimiter type from strsplit().
Ben Abbott <bpabbott@mac.com>
parents: 16712
diff changeset
122 ## [1,5] =
3ce3579405f8 Remove the "legacy" delimiter type from strsplit().
Ben Abbott <bpabbott@mac.com>
parents: 16712
diff changeset
123 ## [1,6] = c
3ce3579405f8 Remove the "legacy" delimiter type from strsplit().
Ben Abbott <bpabbott@mac.com>
parents: 16712
diff changeset
124 ## @}
13701
46e68badedb8 strsplit.m: Expand to accept 2-D character arrays. Improve input validation.
Rik <octave@nomad.inbox5.com>
parents: 12915
diff changeset
125 ## @end group
46e68badedb8 strsplit.m: Expand to accept 2-D character arrays. Improve input validation.
Rik <octave@nomad.inbox5.com>
parents: 12915
diff changeset
126 ## @end example
16403
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
127 ##
16727
3ce3579405f8 Remove the "legacy" delimiter type from strsplit().
Ben Abbott <bpabbott@mac.com>
parents: 16712
diff changeset
128 ## @seealso{ostrsplit, strjoin, strtok, regexp}
8877
2c8b2399247b implement strsplit; deprecate split
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
129 ## @end deftypefn
2c8b2399247b implement strsplit; deprecate split
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
130
16403
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
131 function [result, matches] = strsplit (str, del, varargin)
8884
579de77acd90 strsplit.m: style fixes
John W. Eaton <jwe@octave.org>
parents: 8883
diff changeset
132
16403
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
133 args.collapsedelimiters = true;
16411
5be43435bd5b Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 16403
diff changeset
134 args.delimitertype = "default";
16403
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
135
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
136 [reg, params] = parseparams (varargin);
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
137
16712
9ce08a1efc29 fix strsplit input validation
Mike Miller <mtmiller@ieee.org>
parents: 16557
diff changeset
138 if (nargin < 1)
9ce08a1efc29 fix strsplit input validation
Mike Miller <mtmiller@ieee.org>
parents: 16557
diff changeset
139 print_usage ();
9ce08a1efc29 fix strsplit input validation
Mike Miller <mtmiller@ieee.org>
parents: 16557
diff changeset
140 elseif (numel (reg) > 1)
8877
2c8b2399247b implement strsplit; deprecate split
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
141 print_usage ();
16403
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
142 elseif (numel (reg) == 1)
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
143 if (islogical (reg{1}) || isnumeric (reg{1}))
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
144 args.collapsedelimiters = reg{1};
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
145 else
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
146 print_usage ();
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
147 endif
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
148 endif
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
149 fields = fieldnames (args);
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
150 for n = 1:2:numel(params)
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
151 if (any (strcmpi (params{n}, fields)))
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
152 args.(lower(params{n})) = params{n+1};
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
153 elseif (ischar (varargin{n}))
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
154 error ("strsplit:invalid_parameter_name",
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
155 sprintf ("strsplit: Invalid parameter name, `%s'", varargin{n}))
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
156 else
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
157 print_usage ();
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
158 endif
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
159 endfor
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
160
16411
5be43435bd5b Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 16403
diff changeset
161 if (strcmpi (args.delimitertype, "default"))
16727
3ce3579405f8 Remove the "legacy" delimiter type from strsplit().
Ben Abbott <bpabbott@mac.com>
parents: 16712
diff changeset
162 args.delimitertype = "simple";
16411
5be43435bd5b Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 16403
diff changeset
163 endif
5be43435bd5b Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 16403
diff changeset
164
16403
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
165 # Save the length of the "delimitertype" parameter
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
166 length_deltype = numel (args.delimitertype);
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
167
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
168 if (nargin == 1 || (nargin > 1 && (islogical (del) || isnumeric (del))))
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
169 if (nargin > 1)
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
170 ## Second input is the "collapsedelimiters" parameter
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
171 args.collapsedelimiters = del;
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
172 endif
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
173 ## Set proper default for the delimiter type
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
174 if (strncmpi (args.delimitertype, "simple", numel (args.delimitertype)))
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
175 del = {" ","\f","\n","\r","\t","\v"};
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
176 else
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
177 del = "\\s";
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
178 endif
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
179 endif
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
180
16712
9ce08a1efc29 fix strsplit input validation
Mike Miller <mtmiller@ieee.org>
parents: 16557
diff changeset
181 if (! ischar (str) || (! ischar (del) && ! iscellstr (del)))
16403
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
182 error ("strsplit: S and DEL must be string values");
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
183 elseif (! isscalar (args.collapsedelimiters))
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
184 error ("strsplit: COLLAPSEDELIMITERS must be a scalar value");
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
185 endif
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
186
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
187 if (strncmpi (args.delimitertype, "simple", length_deltype))
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
188 if (iscellstr (del))
16557
d50bca1cdc22 Support escaped characters in sq_strings for strsplit.m.
Ben Abbott <bpabbott@mac.com>
parents: 16554
diff changeset
189 del = cellfun (@do_string_escapes, del, "uniformoutput", false);
16403
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
190 else
16557
d50bca1cdc22 Support escaped characters in sq_strings for strsplit.m.
Ben Abbott <bpabbott@mac.com>
parents: 16554
diff changeset
191 del = do_string_escapes (del);
16403
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
192 endif
16727
3ce3579405f8 Remove the "legacy" delimiter type from strsplit().
Ben Abbott <bpabbott@mac.com>
parents: 16712
diff changeset
193 % This is clumsy, but needed for multi-row strings
16557
d50bca1cdc22 Support escaped characters in sq_strings for strsplit.m.
Ben Abbott <bpabbott@mac.com>
parents: 16554
diff changeset
194 del = regexprep (del, '([^\w])', '\\$1');
8877
2c8b2399247b implement strsplit; deprecate split
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
195 endif
2c8b2399247b implement strsplit; deprecate split
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
196
16403
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
197 if (isempty (str))
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
198 result = {str};
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
199 elseif (strncmpi (args.delimitertype, "regularexpression", length_deltype)
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
200 || strncmpi (args.delimitertype, "simple", length_deltype))
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
201 if (iscellstr (del))
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
202 del = sprintf ('%s|', del{:});
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
203 del(end) = [];
13701
46e68badedb8 strsplit.m: Expand to accept 2-D character arrays. Improve input validation.
Rik <octave@nomad.inbox5.com>
parents: 12915
diff changeset
204 endif
16554
03a28487fa9d Collect collapsed delimiters in strsplit().
Ben Abbott <bpabbott@mac.com>
parents: 16411
diff changeset
205 if (args.collapsedelimiters)
03a28487fa9d Collect collapsed delimiters in strsplit().
Ben Abbott <bpabbott@mac.com>
parents: 16411
diff changeset
206 del = ["(", del, ")+"];
03a28487fa9d Collect collapsed delimiters in strsplit().
Ben Abbott <bpabbott@mac.com>
parents: 16411
diff changeset
207 endif
16403
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
208 [result, ~, ~, ~, matches] = regexp (str, del, "split");
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
209 else
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
210 error ("strsplit:invalid_delimitertype",
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
211 sprintf ("strsplit: Invalid DELIMITERTYPE"))
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
212 endif
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
213 endfunction
8877
2c8b2399247b implement strsplit; deprecate split
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
214
16403
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
215 %!shared str
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
216 %! str = "The rain in Spain stays mainly in the plain.";
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
217 % Split on all whitespace.
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
218 %!assert (strsplit (str), {"The", "rain", "in", "Spain", "stays", ...
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
219 %! "mainly", "in", "the", "plain."})
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
220 % Split on "ain".
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
221 %!assert (strsplit (str, "ain"), {"The r", " in Sp", " stays m", ...
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
222 %! "ly in the pl", "."})
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
223 % Split on " " and "ain" (treating multiple delimiters as one).
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
224 %!test
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
225 %! s = strsplit (str, '\s|ain', true, "delimitertype", "r");
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
226 %! assert (s, {"The", "r", "in", "Sp", "stays", "m", "ly", "in", "the", "pl", "."})
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
227 %!test
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
228 %! s = strsplit (str, "\\s|ain", true, "delimitertype", "r");
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
229 %! assert (s, {"The", "r", "in", "Sp", "stays", "m", "ly", "in", "the", "pl", "."})
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
230 %!test
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
231 %! [s, m] = strsplit (str, {"\\s", "ain"}, true, "delimitertype", "r");
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
232 %! assert (s, {"The", "r", "in", "Sp", "stays", "m", "ly", "in", "the", "pl", "."})
16554
03a28487fa9d Collect collapsed delimiters in strsplit().
Ben Abbott <bpabbott@mac.com>
parents: 16411
diff changeset
233 %! assert (m, {" ", "ain ", " ", "ain ", " ", "ain", " ", " ", " ", "ain"})
16403
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
234 % Split on " " and "ain", and treat multiple delimiters separately.
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
235 %!test
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
236 %! [s, m] = strsplit (str, {" ", "ain"}, "collapsedelimiters", false);
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
237 %! assert (s, {"The", "r", "", "in", "Sp", "", "stays", "m", "ly", "in", "the", "pl", "."})
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
238 %! assert (m, {" ", "ain", " ", " ", "ain", " ", " ", "ain", " ", " ", " ", "ain"})
13701
46e68badedb8 strsplit.m: Expand to accept 2-D character arrays. Improve input validation.
Rik <octave@nomad.inbox5.com>
parents: 12915
diff changeset
239
16403
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
240 %!assert (strsplit ("road to hell"), {"road", "to", "hell"})
13701
46e68badedb8 strsplit.m: Expand to accept 2-D character arrays. Improve input validation.
Rik <octave@nomad.inbox5.com>
parents: 12915
diff changeset
241 %!assert (strsplit ("road to hell", " "), {"road", "to", "hell"})
16403
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
242 %!assert (strsplit ("road to^hell", {" ","^"}), {"road", "to", "hell"})
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
243 %!assert (strsplit ("road to--hell", {" ","-"}, true), {"road", "to", "hell"})
16411
5be43435bd5b Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 16403
diff changeset
244 %!assert (strsplit (["a,bc,,de"], ",", false, "delimitertype", "s"), {"a", "bc", "", "de"})
16727
3ce3579405f8 Remove the "legacy" delimiter type from strsplit().
Ben Abbott <bpabbott@mac.com>
parents: 16712
diff changeset
245 %!assert (strsplit (["a,bc,,de"], ",", false), {"a", "bc", "", "de"})
16403
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
246 %!assert (strsplit (["a,bc,de"], ",", true), {"a", "bc", "de"})
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
247 %!assert (strsplit (["a,bc,de"], {","," "}, true), {"a", "bc", "de"})
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
248
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
249 %!assert (strsplit ("road to hell", " ", "delimitertype", "r"), {"road", "to", "hell"})
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
250 %!assert (strsplit ("road to^hell", '\^| ', "delimitertype", "r"), {"road", "to", "hell"})
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
251 %!assert (strsplit ("road to^hell", "[ ^]", "delimitertype", "r"), {"road", "to", "hell"})
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
252 %!assert (strsplit ("road to--hell", "[ -]", false, "delimitertype", "r"), {"road", "", "", "to", "", "hell"})
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
253 %!assert (strsplit (["a,bc,de"], ",", "delimitertype", "r"), {"a", "bc", "de"})
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
254 %!assert (strsplit (["a,bc,,de"], ",", false, "delimitertype", "r"), {"a", "bc", "", "de"})
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
255 %!assert (strsplit (["a,bc,de"], ",", true, "delimitertype", "r"), {"a", "bc", "de"})
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
256 %!assert (strsplit (["a,bc,de"], "[, ]", true, "delimitertype", "r"), {"a", "bc", "de"})
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
257 %!assert (strsplit ("hello \t world", 1, "delimitertype", "r"), {"hello", "world"});
8877
2c8b2399247b implement strsplit; deprecate split
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
258
16557
d50bca1cdc22 Support escaped characters in sq_strings for strsplit.m.
Ben Abbott <bpabbott@mac.com>
parents: 16554
diff changeset
259 %!assert (strsplit ("foo\tbar", '\t', "delimitertype", "r"), {"foo", "bar"})
d50bca1cdc22 Support escaped characters in sq_strings for strsplit.m.
Ben Abbott <bpabbott@mac.com>
parents: 16554
diff changeset
260 %!assert (strsplit ("foo\tbar", '\t', "delimitertype", "s"), {"foo", "bar"})
d50bca1cdc22 Support escaped characters in sq_strings for strsplit.m.
Ben Abbott <bpabbott@mac.com>
parents: 16554
diff changeset
261
16554
03a28487fa9d Collect collapsed delimiters in strsplit().
Ben Abbott <bpabbott@mac.com>
parents: 16411
diff changeset
262 ## Test "match" for consecutive delmiters
03a28487fa9d Collect collapsed delimiters in strsplit().
Ben Abbott <bpabbott@mac.com>
parents: 16411
diff changeset
263 %!test
03a28487fa9d Collect collapsed delimiters in strsplit().
Ben Abbott <bpabbott@mac.com>
parents: 16411
diff changeset
264 %! [a, m] = strsplit ("a\t \nb", '\s', 'delimitertype', 'regularexpression',
03a28487fa9d Collect collapsed delimiters in strsplit().
Ben Abbott <bpabbott@mac.com>
parents: 16411
diff changeset
265 %! 'collapsedelimiters', false);
03a28487fa9d Collect collapsed delimiters in strsplit().
Ben Abbott <bpabbott@mac.com>
parents: 16411
diff changeset
266 %! assert (a, {"a", "", "", "b"})
03a28487fa9d Collect collapsed delimiters in strsplit().
Ben Abbott <bpabbott@mac.com>
parents: 16411
diff changeset
267 %! assert (m, {"\t", " ", "\n"})
03a28487fa9d Collect collapsed delimiters in strsplit().
Ben Abbott <bpabbott@mac.com>
parents: 16411
diff changeset
268 %!test
03a28487fa9d Collect collapsed delimiters in strsplit().
Ben Abbott <bpabbott@mac.com>
parents: 16411
diff changeset
269 %! [a, m] = strsplit ("a\t \nb", '\s', false, 'delimitertype', 'regularexpression');
03a28487fa9d Collect collapsed delimiters in strsplit().
Ben Abbott <bpabbott@mac.com>
parents: 16411
diff changeset
270 %! assert (a, {"a", "", "", "b"})
03a28487fa9d Collect collapsed delimiters in strsplit().
Ben Abbott <bpabbott@mac.com>
parents: 16411
diff changeset
271 %! assert (m, {"\t", " ", "\n"})
03a28487fa9d Collect collapsed delimiters in strsplit().
Ben Abbott <bpabbott@mac.com>
parents: 16411
diff changeset
272 %!test
03a28487fa9d Collect collapsed delimiters in strsplit().
Ben Abbott <bpabbott@mac.com>
parents: 16411
diff changeset
273 %! [a, m] = strsplit ("a\t \nb", '\s', "delimitertype", "regularexpression");
03a28487fa9d Collect collapsed delimiters in strsplit().
Ben Abbott <bpabbott@mac.com>
parents: 16411
diff changeset
274 %! assert (a, {"a", "b"})
03a28487fa9d Collect collapsed delimiters in strsplit().
Ben Abbott <bpabbott@mac.com>
parents: 16411
diff changeset
275 %! assert (m, {"\t \n"})
03a28487fa9d Collect collapsed delimiters in strsplit().
Ben Abbott <bpabbott@mac.com>
parents: 16411
diff changeset
276 %!test
03a28487fa9d Collect collapsed delimiters in strsplit().
Ben Abbott <bpabbott@mac.com>
parents: 16411
diff changeset
277 %! [a, m] = strsplit ("a\t \nb", {"\t", " ", "\n"}, "delimitertype", "simple");
03a28487fa9d Collect collapsed delimiters in strsplit().
Ben Abbott <bpabbott@mac.com>
parents: 16411
diff changeset
278 %! assert (a, {"a", "b"})
03a28487fa9d Collect collapsed delimiters in strsplit().
Ben Abbott <bpabbott@mac.com>
parents: 16411
diff changeset
279 %! assert (m, {"\t \n"})
03a28487fa9d Collect collapsed delimiters in strsplit().
Ben Abbott <bpabbott@mac.com>
parents: 16411
diff changeset
280 %!test
03a28487fa9d Collect collapsed delimiters in strsplit().
Ben Abbott <bpabbott@mac.com>
parents: 16411
diff changeset
281 %! [s, m] = strsplit ("hello \t world", 1);
03a28487fa9d Collect collapsed delimiters in strsplit().
Ben Abbott <bpabbott@mac.com>
parents: 16411
diff changeset
282 %! assert (s, {"hello", "world"});
03a28487fa9d Collect collapsed delimiters in strsplit().
Ben Abbott <bpabbott@mac.com>
parents: 16411
diff changeset
283 %! assert (m, {" \t "});
03a28487fa9d Collect collapsed delimiters in strsplit().
Ben Abbott <bpabbott@mac.com>
parents: 16411
diff changeset
284
16727
3ce3579405f8 Remove the "legacy" delimiter type from strsplit().
Ben Abbott <bpabbott@mac.com>
parents: 16712
diff changeset
285 %% Compatibility
3ce3579405f8 Remove the "legacy" delimiter type from strsplit().
Ben Abbott <bpabbott@mac.com>
parents: 16712
diff changeset
286 %! assert (strsplit ("", "a"), {""})
3ce3579405f8 Remove the "legacy" delimiter type from strsplit().
Ben Abbott <bpabbott@mac.com>
parents: 16712
diff changeset
287 %! assert (strsplit ("a", "a"), {"", ""})
3ce3579405f8 Remove the "legacy" delimiter type from strsplit().
Ben Abbott <bpabbott@mac.com>
parents: 16712
diff changeset
288 %! assert (strsplit ("aa", "a"), {"", ""})
3ce3579405f8 Remove the "legacy" delimiter type from strsplit().
Ben Abbott <bpabbott@mac.com>
parents: 16712
diff changeset
289 %! assert (strsplit ("aaa", "a"), {"", ""})
3ce3579405f8 Remove the "legacy" delimiter type from strsplit().
Ben Abbott <bpabbott@mac.com>
parents: 16712
diff changeset
290
13701
46e68badedb8 strsplit.m: Expand to accept 2-D character arrays. Improve input validation.
Rik <octave@nomad.inbox5.com>
parents: 12915
diff changeset
291 %% Test input validation
46e68badedb8 strsplit.m: Expand to accept 2-D character arrays. Improve input validation.
Rik <octave@nomad.inbox5.com>
parents: 12915
diff changeset
292 %!error strsplit ()
46e68badedb8 strsplit.m: Expand to accept 2-D character arrays. Improve input validation.
Rik <octave@nomad.inbox5.com>
parents: 12915
diff changeset
293 %!error strsplit ("abc", "b", true, 4)
16403
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
294 %!error <S and DEL must be string values> strsplit (123, "b")
1de4ec2a856d Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents: 15521
diff changeset
295 %!error <COLLAPSEDELIMITERS must be a scalar value> strsplit ("abc", "def", ones (3,3))
8877
2c8b2399247b implement strsplit; deprecate split
Jaroslav Hajek <highegg@gmail.com>
parents:
diff changeset
296