Mercurial > hg > octave-nkf
annotate scripts/strings/strsplit.m @ 16557:d50bca1cdc22
Support escaped characters in sq_strings for strsplit.m.
* scripts/strings/strsplit.m: Remove private function regexp2simple() and
replace with regexprep(). Apply do_string_escapes() to sq_strings. Improve
doc-string. Add tests.
author | Ben Abbott <bpabbott@mac.com> |
---|---|
date | Tue, 23 Apr 2013 20:26:07 -0400 |
parents | 03a28487fa9d |
children | 9ce08a1efc29 |
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 | 3 ## This file is part of Octave. |
4 ## | |
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 | 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 | 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 (@var{s}, @var{del}, @var{collapsedelimiters}) |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
23 ## @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
|
24 ## @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
|
25 ## Split the string @var{s} using the delimiters specified by @var{del} |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
26 ## and return a cell array of strings. For a single delimiter, @var{del} |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
27 ## may be a string, or a scalar cell-string. For multible delimiters, |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
28 ## @var{del} must be a cell-string array. Unless @var{collapsedelimiters} is |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
29 ## specified to be @var{false}, consecutive delimiters 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 |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
32 ## in the original string. The matched delimiters are uneffected by the |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
33 ## @var{collapsedelimiters}. |
13701
46e68badedb8
strsplit.m: Expand to accept 2-D character arrays. Improve input validation.
Rik <octave@nomad.inbox5.com>
parents:
12915
diff
changeset
|
34 ## |
46e68badedb8
strsplit.m: Expand to accept 2-D character arrays. Improve input validation.
Rik <octave@nomad.inbox5.com>
parents:
12915
diff
changeset
|
35 ## Example: |
13929
9cae456085c2
Grammarcheck of documentation before 3.6.0 release.
Rik <octave@nomad.inbox5.com>
parents:
13776
diff
changeset
|
36 ## |
13701
46e68badedb8
strsplit.m: Expand to accept 2-D character arrays. Improve input validation.
Rik <octave@nomad.inbox5.com>
parents:
12915
diff
changeset
|
37 ## @example |
13929
9cae456085c2
Grammarcheck of documentation before 3.6.0 release.
Rik <octave@nomad.inbox5.com>
parents:
13776
diff
changeset
|
38 ## @group |
16403
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
39 ## strsplit ("a b c") |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
40 ## @result{} |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
41 ## @{ |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
42 ## [1,1] = a |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
43 ## [1,2] = b |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
44 ## [1,3] = c |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
45 ## @} |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
46 ## |
13701
46e68badedb8
strsplit.m: Expand to accept 2-D character arrays. Improve input validation.
Rik <octave@nomad.inbox5.com>
parents:
12915
diff
changeset
|
47 ## 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
|
48 ## @result{} |
13701
46e68badedb8
strsplit.m: Expand to accept 2-D character arrays. Improve input validation.
Rik <octave@nomad.inbox5.com>
parents:
12915
diff
changeset
|
49 ## @{ |
46e68badedb8
strsplit.m: Expand to accept 2-D character arrays. Improve input validation.
Rik <octave@nomad.inbox5.com>
parents:
12915
diff
changeset
|
50 ## [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
|
51 ## [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
|
52 ## [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
|
53 ## @} |
46e68badedb8
strsplit.m: Expand to accept 2-D character arrays. Improve input validation.
Rik <octave@nomad.inbox5.com>
parents:
12915
diff
changeset
|
54 ## |
16403
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
55 ## strsplit ("a foo b,bar c", @{"\s", "foo", "bar"@}) |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
56 ## @result{} |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
57 ## @{ |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
58 ## [1,1] = a |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
59 ## [1,2] = b |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
60 ## [1,3] = c |
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 ## |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
63 ## strsplit ("a,,b, c", @{",", " "@}, false) |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
64 ## @result{} |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
65 ## @{ |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
66 ## [1,1] = a |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
67 ## [1,2] = |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
68 ## [1,3] = b |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
69 ## [1,4] = |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
70 ## [1,5] = c |
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 ## |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
73 ## @end group |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
74 ## @end example |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
75 ## |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
76 ## Supported @var{name}/@var{value} pair arguments are; |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
77 ## |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
78 ## @itemize |
16411
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
79 ## @item @var{collapsedelimiters} may take the value of @var{true} or @var{false} |
16403
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
80 ## with the default being @var{false}. |
16411
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
81 ## @item @var{delimitertype} may take the value of @code{legacy}, |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
82 ## @code{simple} or @code{regularexpression}. |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
83 ## If @var{delimitertype} is equal to @code{legacy}, each individual |
16557
d50bca1cdc22
Support escaped characters in sq_strings for strsplit.m.
Ben Abbott <bpabbott@mac.com>
parents:
16554
diff
changeset
|
84 ## character of @var{del} is used to split the input. For both @code{simple} |
d50bca1cdc22
Support escaped characters in sq_strings for strsplit.m.
Ben Abbott <bpabbott@mac.com>
parents:
16554
diff
changeset
|
85 ## and @code{regularexpression}, the string is split at the boundaries of the |
d50bca1cdc22
Support escaped characters in sq_strings for strsplit.m.
Ben Abbott <bpabbott@mac.com>
parents:
16554
diff
changeset
|
86 ## delimiter string. If @var{delimiter} is a cell-string, then the string |
d50bca1cdc22
Support escaped characters in sq_strings for strsplit.m.
Ben Abbott <bpabbott@mac.com>
parents:
16554
diff
changeset
|
87 ## is split at the boundaries of each of the cells' strings. @var{simple} |
d50bca1cdc22
Support escaped characters in sq_strings for strsplit.m.
Ben Abbott <bpabbott@mac.com>
parents:
16554
diff
changeset
|
88 ## delimiters may contain escaped characters, but are otherwise treated as |
d50bca1cdc22
Support escaped characters in sq_strings for strsplit.m.
Ben Abbott <bpabbott@mac.com>
parents:
16554
diff
changeset
|
89 ## literal strings. |
d50bca1cdc22
Support escaped characters in sq_strings for strsplit.m.
Ben Abbott <bpabbott@mac.com>
parents:
16554
diff
changeset
|
90 ## |
16411
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
91 ## If the specified delimiters are single characters, the default is |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
92 ## @var{delimitertype} is @code{legacy}. Otherwise the default |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
93 ## @var{delimitertype} is @code{simple}. |
16403
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
94 ## @end itemize |
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 ## Example: |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
97 ## |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
98 ## @example |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
99 ## @group |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
100 ## 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
|
101 ## @result{} |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
102 ## @{ |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
103 ## [1,1] = a |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
104 ## [1,2] = b |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
105 ## [1,3] = c |
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 ## |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
108 ## strsplit ("a,,b, c", "[, ]", false, "delimitertype", "regularexpression") |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
109 ## @result{} |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
110 ## @{ |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
111 ## [1,1] = a |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
112 ## [1,2] = |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
113 ## [1,3] = b |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
114 ## [1,4] = |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
115 ## [1,5] = c |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
116 ## @} |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
117 ## |
16411
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
118 ## strsplit ("a,,b, c", ", ", false, "delimitertype", "legacy") |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
119 ## @result{} |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
120 ## @{ |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
121 ## [1,1] = a |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
122 ## [1,2] = |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
123 ## [1,3] = b |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
124 ## [1,4] = |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
125 ## [1,5] = c |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
126 ## @} |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
127 ## |
16403
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
128 ## 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
|
129 ## @result{} |
13701
46e68badedb8
strsplit.m: Expand to accept 2-D character arrays. Improve input validation.
Rik <octave@nomad.inbox5.com>
parents:
12915
diff
changeset
|
130 ## @{ |
46e68badedb8
strsplit.m: Expand to accept 2-D character arrays. Improve input validation.
Rik <octave@nomad.inbox5.com>
parents:
12915
diff
changeset
|
131 ## [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
|
132 ## [1,2] = b |
16403
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
133 ## [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
|
134 ## @} |
46e68badedb8
strsplit.m: Expand to accept 2-D character arrays. Improve input validation.
Rik <octave@nomad.inbox5.com>
parents:
12915
diff
changeset
|
135 ## @end group |
46e68badedb8
strsplit.m: Expand to accept 2-D character arrays. Improve input validation.
Rik <octave@nomad.inbox5.com>
parents:
12915
diff
changeset
|
136 ## @end example |
16403
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
137 ## |
16411
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
138 ## @seealso{strjoin, strtok, regexp} |
8877
2c8b2399247b
implement strsplit; deprecate split
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
139 ## @end deftypefn |
2c8b2399247b
implement strsplit; deprecate split
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
140 |
16403
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
141 function [result, matches] = strsplit (str, del, varargin) |
8884 | 142 |
16403
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
143 args.collapsedelimiters = true; |
16411
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
144 args.delimitertype = "default"; |
16403
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
145 |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
146 [reg, params] = parseparams (varargin); |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
147 |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
148 if (numel (reg) > 1) |
8877
2c8b2399247b
implement strsplit; deprecate split
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
149 print_usage (); |
16403
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
150 elseif (numel (reg) == 1) |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
151 if (islogical (reg{1}) || isnumeric (reg{1})) |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
152 args.collapsedelimiters = reg{1}; |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
153 else |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
154 print_usage (); |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
155 endif |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
156 endif |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
157 fields = fieldnames (args); |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
158 for n = 1:2:numel(params) |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
159 if (any (strcmpi (params{n}, fields))) |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
160 args.(lower(params{n})) = params{n+1}; |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
161 elseif (ischar (varargin{n})) |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
162 error ("strsplit:invalid_parameter_name", |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
163 sprintf ("strsplit: Invalid parameter name, `%s'", varargin{n})) |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
164 else |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
165 print_usage (); |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
166 endif |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
167 endfor |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
168 |
16411
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
169 if (strcmpi (args.delimitertype, "default")) |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
170 if (nargin == 1 || numel (del) == 1 |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
171 || (nargin > 1 && (islogical (del) || isnumeric (del))) |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
172 || iscell (del) && all (cellfun (@numel, del) < 2)) |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
173 ## For single character delimiters, default to "legacy" |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
174 args.delimitertype = "legacy"; |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
175 else |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
176 ## For multi-character delimiters, default to "simple" |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
177 args.delimitertype = "simple"; |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
178 endif |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
179 endif |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
180 |
16403
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
181 # Save the length of the "delimitertype" parameter |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
182 length_deltype = numel (args.delimitertype); |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
183 |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
184 if (nargin == 1 || (nargin > 1 && (islogical (del) || isnumeric (del)))) |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
185 if (nargin > 1) |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
186 ## Second input is the "collapsedelimiters" parameter |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
187 args.collapsedelimiters = del; |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
188 endif |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
189 ## Set proper default for the delimiter type |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
190 if (strncmpi (args.delimitertype, "simple", numel (args.delimitertype))) |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
191 del = {" ","\f","\n","\r","\t","\v"}; |
16411
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
192 elseif (strncmpi (args.delimitertype, "legacy", numel (args.delimitertype))) |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
193 del = " \f\n\r\t\v"; |
16403
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
194 else |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
195 del = "\\s"; |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
196 endif |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
197 endif |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
198 |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
199 if (nargin < 1) |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
200 print_usage (); |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
201 elseif (! ischar (str) || (! ischar (del) && ! iscellstr (del))) |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
202 error ("strsplit: S and DEL must be string values"); |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
203 elseif (! isscalar (args.collapsedelimiters)) |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
204 error ("strsplit: COLLAPSEDELIMITERS must be a scalar value"); |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
205 endif |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
206 |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
207 if (strncmpi (args.delimitertype, "simple", length_deltype)) |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
208 if (iscellstr (del)) |
16557
d50bca1cdc22
Support escaped characters in sq_strings for strsplit.m.
Ben Abbott <bpabbott@mac.com>
parents:
16554
diff
changeset
|
209 del = cellfun (@do_string_escapes, del, "uniformoutput", false); |
16403
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
210 else |
16557
d50bca1cdc22
Support escaped characters in sq_strings for strsplit.m.
Ben Abbott <bpabbott@mac.com>
parents:
16554
diff
changeset
|
211 del = do_string_escapes (del); |
16403
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
212 endif |
16557
d50bca1cdc22
Support escaped characters in sq_strings for strsplit.m.
Ben Abbott <bpabbott@mac.com>
parents:
16554
diff
changeset
|
213 del = regexprep (del, '([^\w])', '\\$1'); |
8877
2c8b2399247b
implement strsplit; deprecate split
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
214 endif |
2c8b2399247b
implement strsplit; deprecate split
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
215 |
16411
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
216 if (rows (str) > 1) |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
217 tmp = char (del(1)); |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
218 str = [str, repmat(tmp,rows(str),1)]; |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
219 str = reshape (str.', 1, numel (str)); |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
220 str(end-numel(tmp)+1:end) = []; |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
221 endif |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
222 |
16403
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
223 if (isempty (str)) |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
224 result = {str}; |
16411
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
225 elseif (strncmpi (args.delimitertype, "legacy", length_deltype)) |
16557
d50bca1cdc22
Support escaped characters in sq_strings for strsplit.m.
Ben Abbott <bpabbott@mac.com>
parents:
16554
diff
changeset
|
226 ## Legacy splitting is fast |
16411
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
227 if (! ischar (del)) |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
228 if (iscell (del) && all (cellfun (@numel, del) < 2)) |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
229 del = [del{:}]; |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
230 else |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
231 error ("strsplit:legacy_delimiter_must_be_char", |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
232 "%s %s", "strsplit: for DELIMITERTYPE = ""legacy"" ", |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
233 "DEL must be a string, or a cell array scalar character elements.") |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
234 endif |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
235 endif |
16557
d50bca1cdc22
Support escaped characters in sq_strings for strsplit.m.
Ben Abbott <bpabbott@mac.com>
parents:
16554
diff
changeset
|
236 if (strcmp (typeinfo (del), "sq_string")) |
d50bca1cdc22
Support escaped characters in sq_strings for strsplit.m.
Ben Abbott <bpabbott@mac.com>
parents:
16554
diff
changeset
|
237 del = do_string_escapes (del); |
d50bca1cdc22
Support escaped characters in sq_strings for strsplit.m.
Ben Abbott <bpabbott@mac.com>
parents:
16554
diff
changeset
|
238 endif |
d50bca1cdc22
Support escaped characters in sq_strings for strsplit.m.
Ben Abbott <bpabbott@mac.com>
parents:
16554
diff
changeset
|
239 ## Split str at each character contained in del |
16411
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
240 if (isscalar (del)) |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
241 ## Single separator |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
242 idx = find (str == del); |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
243 else |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
244 ## Multiple separators |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
245 idx = strchr (str, del); |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
246 endif |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
247 |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
248 ## Get substring lengths. |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
249 if (isempty (idx)) |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
250 strlens = length (str); |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
251 else |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
252 strlens = [idx(1)-1, diff(idx)-1, numel(str)-idx(end)]; |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
253 endif |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
254 if (nargout > 1) |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
255 ## Grab the separators |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
256 matches = num2cell (str(idx)(:)).'; |
16554
03a28487fa9d
Collect collapsed delimiters in strsplit().
Ben Abbott <bpabbott@mac.com>
parents:
16411
diff
changeset
|
257 if (args.collapsedelimiters) |
03a28487fa9d
Collect collapsed delimiters in strsplit().
Ben Abbott <bpabbott@mac.com>
parents:
16411
diff
changeset
|
258 ## Collapse the consequtive delimiters |
03a28487fa9d
Collect collapsed delimiters in strsplit().
Ben Abbott <bpabbott@mac.com>
parents:
16411
diff
changeset
|
259 ## TODO - is there a vectorized way? |
03a28487fa9d
Collect collapsed delimiters in strsplit().
Ben Abbott <bpabbott@mac.com>
parents:
16411
diff
changeset
|
260 for m = numel(matches):-1:2 |
03a28487fa9d
Collect collapsed delimiters in strsplit().
Ben Abbott <bpabbott@mac.com>
parents:
16411
diff
changeset
|
261 if (strlens(m) == 0) |
03a28487fa9d
Collect collapsed delimiters in strsplit().
Ben Abbott <bpabbott@mac.com>
parents:
16411
diff
changeset
|
262 matches{m-1} = [matches{m-1:m}]; |
03a28487fa9d
Collect collapsed delimiters in strsplit().
Ben Abbott <bpabbott@mac.com>
parents:
16411
diff
changeset
|
263 matches(m) = []; |
03a28487fa9d
Collect collapsed delimiters in strsplit().
Ben Abbott <bpabbott@mac.com>
parents:
16411
diff
changeset
|
264 endif |
03a28487fa9d
Collect collapsed delimiters in strsplit().
Ben Abbott <bpabbott@mac.com>
parents:
16411
diff
changeset
|
265 end |
03a28487fa9d
Collect collapsed delimiters in strsplit().
Ben Abbott <bpabbott@mac.com>
parents:
16411
diff
changeset
|
266 endif |
16411
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
267 endif |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
268 ## Remove separators. |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
269 str(idx) = []; |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
270 if (args.collapsedelimiters) |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
271 ## Omit zero lengths. |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
272 strlens = strlens(strlens != 0); |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
273 endif |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
274 |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
275 ## Convert! |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
276 result = mat2cell (str, 1, strlens); |
16403
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
277 elseif (strncmpi (args.delimitertype, "regularexpression", length_deltype) |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
278 || strncmpi (args.delimitertype, "simple", length_deltype)) |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
279 if (iscellstr (del)) |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
280 del = sprintf ('%s|', del{:}); |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
281 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
|
282 endif |
16554
03a28487fa9d
Collect collapsed delimiters in strsplit().
Ben Abbott <bpabbott@mac.com>
parents:
16411
diff
changeset
|
283 if (args.collapsedelimiters) |
03a28487fa9d
Collect collapsed delimiters in strsplit().
Ben Abbott <bpabbott@mac.com>
parents:
16411
diff
changeset
|
284 del = ["(", del, ")+"]; |
03a28487fa9d
Collect collapsed delimiters in strsplit().
Ben Abbott <bpabbott@mac.com>
parents:
16411
diff
changeset
|
285 endif |
16403
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
286 [result, ~, ~, ~, matches] = regexp (str, del, "split"); |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
287 else |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
288 error ("strsplit:invalid_delimitertype", |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
289 sprintf ("strsplit: Invalid DELIMITERTYPE")) |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
290 endif |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
291 endfunction |
8877
2c8b2399247b
implement strsplit; deprecate split
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
292 |
16411
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
293 % Mimic the old strsplit() |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
294 %!assert (cellfun (@numel, strsplit (["a,b,c";"1,2 "], ",")), [1 1 2 1 4]) |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
295 |
16403
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
296 %!shared str |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
297 %! str = "The rain in Spain stays mainly in the plain."; |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
298 % Split on all whitespace. |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
299 %!assert (strsplit (str), {"The", "rain", "in", "Spain", "stays", ... |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
300 %! "mainly", "in", "the", "plain."}) |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
301 % Split on "ain". |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
302 %!assert (strsplit (str, "ain"), {"The r", " in Sp", " stays m", ... |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
303 %! "ly in the pl", "."}) |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
304 % Split on " " and "ain" (treating multiple delimiters as one). |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
305 %!test |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
306 %! s = strsplit (str, '\s|ain', true, "delimitertype", "r"); |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
307 %! 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
|
308 %!test |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
309 %! s = strsplit (str, "\\s|ain", true, "delimitertype", "r"); |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
310 %! 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
|
311 %!test |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
312 %! [s, m] = strsplit (str, {"\\s", "ain"}, true, "delimitertype", "r"); |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
313 %! 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
|
314 %! assert (m, {" ", "ain ", " ", "ain ", " ", "ain", " ", " ", " ", "ain"}) |
16403
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
315 % Split on " " and "ain", and treat multiple delimiters separately. |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
316 %!test |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
317 %! [s, m] = strsplit (str, {" ", "ain"}, "collapsedelimiters", false); |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
318 %! 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
|
319 %! 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
|
320 |
16403
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
321 %!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
|
322 %!assert (strsplit ("road to hell", " "), {"road", "to", "hell"}) |
16403
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
323 %!assert (strsplit ("road to^hell", {" ","^"}), {"road", "to", "hell"}) |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
324 %!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
|
325 %!assert (strsplit (["a,bc,,de"], ",", false, "delimitertype", "s"), {"a", "bc", "", "de"}) |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
326 %!assert (strsplit (["a,bc,,de"], ",", false), {"a", "bc", char(ones(1,0)), "de"}) |
16403
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
327 %!assert (strsplit (["a,bc,de"], ",", true), {"a", "bc", "de"}) |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
328 %!assert (strsplit (["a,bc,de"], {","," "}, true), {"a", "bc", "de"}) |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
329 |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
330 %!assert (strsplit ("road to hell", " ", "delimitertype", "r"), {"road", "to", "hell"}) |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
331 %!assert (strsplit ("road to^hell", '\^| ', "delimitertype", "r"), {"road", "to", "hell"}) |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
332 %!assert (strsplit ("road to^hell", "[ ^]", "delimitertype", "r"), {"road", "to", "hell"}) |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
333 %!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
|
334 %!assert (strsplit (["a,bc,de"], ",", "delimitertype", "r"), {"a", "bc", "de"}) |
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
335 %!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
|
336 %!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
|
337 %!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
|
338 %!assert (strsplit ("hello \t world", 1, "delimitertype", "r"), {"hello", "world"}); |
8877
2c8b2399247b
implement strsplit; deprecate split
Jaroslav Hajek <highegg@gmail.com>
parents:
diff
changeset
|
339 |
16411
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
340 %!assert (strsplit ("road to hell", " ", false, "delimitertype", "l"), {"road", "to", "hell"}) |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
341 %!assert (strsplit ("road to^hell", " ^", false, "delimitertype", "l"), {"road", "to", "hell"}) |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
342 %!assert (strsplit ("road to--hell", " -", true, "delimitertype", "l"), {"road", "to", "hell"}) |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
343 %!assert (strsplit (["a,bc";",de"], ",", false, "delimitertype", "l"), {"a", "bc", char(ones(1,0)), "de "}) |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
344 %!assert (strsplit (["a,bc";",de"], ",", true, "delimitertype", "l"), {"a", "bc", "de "}) |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
345 %!assert (strsplit (["a,bc";",de"], ", ", true, "delimitertype", "l"), {"a", "bc", "de"}) |
5be43435bd5b
Improve speed and backward compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
16403
diff
changeset
|
346 |
16557
d50bca1cdc22
Support escaped characters in sq_strings for strsplit.m.
Ben Abbott <bpabbott@mac.com>
parents:
16554
diff
changeset
|
347 %!assert (strsplit ("foo\tbar", '\t', "delimitertype", "l"), {"foo", "bar"}) |
d50bca1cdc22
Support escaped characters in sq_strings for strsplit.m.
Ben Abbott <bpabbott@mac.com>
parents:
16554
diff
changeset
|
348 %!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
|
349 %!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
|
350 |
16554
03a28487fa9d
Collect collapsed delimiters in strsplit().
Ben Abbott <bpabbott@mac.com>
parents:
16411
diff
changeset
|
351 ## Test "match" for consecutive delmiters |
03a28487fa9d
Collect collapsed delimiters in strsplit().
Ben Abbott <bpabbott@mac.com>
parents:
16411
diff
changeset
|
352 %!test |
03a28487fa9d
Collect collapsed delimiters in strsplit().
Ben Abbott <bpabbott@mac.com>
parents:
16411
diff
changeset
|
353 %! [a, m] = strsplit ("a\t \nb", '\s', 'delimitertype', 'regularexpression', |
03a28487fa9d
Collect collapsed delimiters in strsplit().
Ben Abbott <bpabbott@mac.com>
parents:
16411
diff
changeset
|
354 %! 'collapsedelimiters', false); |
03a28487fa9d
Collect collapsed delimiters in strsplit().
Ben Abbott <bpabbott@mac.com>
parents:
16411
diff
changeset
|
355 %! assert (a, {"a", "", "", "b"}) |
03a28487fa9d
Collect collapsed delimiters in strsplit().
Ben Abbott <bpabbott@mac.com>
parents:
16411
diff
changeset
|
356 %! assert (m, {"\t", " ", "\n"}) |
03a28487fa9d
Collect collapsed delimiters in strsplit().
Ben Abbott <bpabbott@mac.com>
parents:
16411
diff
changeset
|
357 %!test |
03a28487fa9d
Collect collapsed delimiters in strsplit().
Ben Abbott <bpabbott@mac.com>
parents:
16411
diff
changeset
|
358 %! [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
|
359 %! assert (a, {"a", "", "", "b"}) |
03a28487fa9d
Collect collapsed delimiters in strsplit().
Ben Abbott <bpabbott@mac.com>
parents:
16411
diff
changeset
|
360 %! assert (m, {"\t", " ", "\n"}) |
03a28487fa9d
Collect collapsed delimiters in strsplit().
Ben Abbott <bpabbott@mac.com>
parents:
16411
diff
changeset
|
361 %!test |
03a28487fa9d
Collect collapsed delimiters in strsplit().
Ben Abbott <bpabbott@mac.com>
parents:
16411
diff
changeset
|
362 %! [a, m] = strsplit ("a\t \nb", '\s', "delimitertype", "regularexpression"); |
03a28487fa9d
Collect collapsed delimiters in strsplit().
Ben Abbott <bpabbott@mac.com>
parents:
16411
diff
changeset
|
363 %! assert (a, {"a", "b"}) |
03a28487fa9d
Collect collapsed delimiters in strsplit().
Ben Abbott <bpabbott@mac.com>
parents:
16411
diff
changeset
|
364 %! assert (m, {"\t \n"}) |
03a28487fa9d
Collect collapsed delimiters in strsplit().
Ben Abbott <bpabbott@mac.com>
parents:
16411
diff
changeset
|
365 %!test |
03a28487fa9d
Collect collapsed delimiters in strsplit().
Ben Abbott <bpabbott@mac.com>
parents:
16411
diff
changeset
|
366 %! [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
|
367 %! assert (a, {"a", "b"}) |
03a28487fa9d
Collect collapsed delimiters in strsplit().
Ben Abbott <bpabbott@mac.com>
parents:
16411
diff
changeset
|
368 %! assert (m, {"\t \n"}) |
03a28487fa9d
Collect collapsed delimiters in strsplit().
Ben Abbott <bpabbott@mac.com>
parents:
16411
diff
changeset
|
369 %!test |
03a28487fa9d
Collect collapsed delimiters in strsplit().
Ben Abbott <bpabbott@mac.com>
parents:
16411
diff
changeset
|
370 %! [a, m] = strsplit ("a123b", "123", "delimitertype", "legacy"); |
03a28487fa9d
Collect collapsed delimiters in strsplit().
Ben Abbott <bpabbott@mac.com>
parents:
16411
diff
changeset
|
371 %! assert (a, {"a", "b"}) |
03a28487fa9d
Collect collapsed delimiters in strsplit().
Ben Abbott <bpabbott@mac.com>
parents:
16411
diff
changeset
|
372 %! assert (m, {"123"}) |
03a28487fa9d
Collect collapsed delimiters in strsplit().
Ben Abbott <bpabbott@mac.com>
parents:
16411
diff
changeset
|
373 %!test |
03a28487fa9d
Collect collapsed delimiters in strsplit().
Ben Abbott <bpabbott@mac.com>
parents:
16411
diff
changeset
|
374 %! [s, m] = strsplit ("hello \t world", 1); |
03a28487fa9d
Collect collapsed delimiters in strsplit().
Ben Abbott <bpabbott@mac.com>
parents:
16411
diff
changeset
|
375 %! assert (s, {"hello", "world"}); |
03a28487fa9d
Collect collapsed delimiters in strsplit().
Ben Abbott <bpabbott@mac.com>
parents:
16411
diff
changeset
|
376 %! assert (m, {" \t "}); |
03a28487fa9d
Collect collapsed delimiters in strsplit().
Ben Abbott <bpabbott@mac.com>
parents:
16411
diff
changeset
|
377 |
13701
46e68badedb8
strsplit.m: Expand to accept 2-D character arrays. Improve input validation.
Rik <octave@nomad.inbox5.com>
parents:
12915
diff
changeset
|
378 %% 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
|
379 %!error strsplit () |
46e68badedb8
strsplit.m: Expand to accept 2-D character arrays. Improve input validation.
Rik <octave@nomad.inbox5.com>
parents:
12915
diff
changeset
|
380 %!error strsplit ("abc", "b", true, 4) |
16403
1de4ec2a856d
Matlab compatibility for strsplit()
Ben Abbott <bpabbott@mac.com>
parents:
15521
diff
changeset
|
381 %!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
|
382 %!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
|
383 |