annotate scripts/strings/strcmp.m @ 5031:5d1e2102d447

[project @ 2004-09-24 03:50:58 by jwe]
author jwe
date Fri, 24 Sep 2004 03:50:58 +0000
parents 761b8d760785
children 4c8a2e4e0717
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2847
8b262e771614 [project @ 1997-03-27 16:18:26 by jwe]
jwe
parents: 2325
diff changeset
1 ## Copyright (C) 1996, 1997 John W. Eaton
2313
5ca126254d15 [project @ 1996-07-11 21:25:22 by jwe]
jwe
parents: 2311
diff changeset
2 ##
5ca126254d15 [project @ 1996-07-11 21:25:22 by jwe]
jwe
parents: 2311
diff changeset
3 ## This file is part of Octave.
5ca126254d15 [project @ 1996-07-11 21:25:22 by jwe]
jwe
parents: 2311
diff changeset
4 ##
5ca126254d15 [project @ 1996-07-11 21:25:22 by jwe]
jwe
parents: 2311
diff changeset
5 ## Octave is free software; you can redistribute it and/or modify it
5ca126254d15 [project @ 1996-07-11 21:25:22 by jwe]
jwe
parents: 2311
diff changeset
6 ## under the terms of the GNU General Public License as published by
5ca126254d15 [project @ 1996-07-11 21:25:22 by jwe]
jwe
parents: 2311
diff changeset
7 ## the Free Software Foundation; either version 2, or (at your option)
5ca126254d15 [project @ 1996-07-11 21:25:22 by jwe]
jwe
parents: 2311
diff changeset
8 ## any later version.
5ca126254d15 [project @ 1996-07-11 21:25:22 by jwe]
jwe
parents: 2311
diff changeset
9 ##
5ca126254d15 [project @ 1996-07-11 21:25:22 by jwe]
jwe
parents: 2311
diff changeset
10 ## Octave is distributed in the hope that it will be useful, but
5ca126254d15 [project @ 1996-07-11 21:25:22 by jwe]
jwe
parents: 2311
diff changeset
11 ## WITHOUT ANY WARRANTY; without even the implied warranty of
5ca126254d15 [project @ 1996-07-11 21:25:22 by jwe]
jwe
parents: 2311
diff changeset
12 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
5ca126254d15 [project @ 1996-07-11 21:25:22 by jwe]
jwe
parents: 2311
diff changeset
13 ## General Public License for more details.
5ca126254d15 [project @ 1996-07-11 21:25:22 by jwe]
jwe
parents: 2311
diff changeset
14 ##
5ca126254d15 [project @ 1996-07-11 21:25:22 by jwe]
jwe
parents: 2311
diff changeset
15 ## You should have received a copy of the GNU General Public License
5ca126254d15 [project @ 1996-07-11 21:25:22 by jwe]
jwe
parents: 2311
diff changeset
16 ## along with Octave; see the file COPYING. If not, write to the Free
5ca126254d15 [project @ 1996-07-11 21:25:22 by jwe]
jwe
parents: 2311
diff changeset
17 ## Software Foundation, 59 Temple Place - Suite 330, Boston, MA
5ca126254d15 [project @ 1996-07-11 21:25:22 by jwe]
jwe
parents: 2311
diff changeset
18 ## 02111-1307, USA.
245
16a24e76d6e0 [project @ 1993-12-03 02:00:15 by jwe]
jwe
parents: 4
diff changeset
19
3361
4f40efa995c1 [project @ 1999-11-19 21:19:37 by jwe]
jwe
parents: 2847
diff changeset
20 ## -*- texinfo -*-
4f40efa995c1 [project @ 1999-11-19 21:19:37 by jwe]
jwe
parents: 2847
diff changeset
21 ## @deftypefn {Function File} {} strcmp (@var{s1}, @var{s2})
4f40efa995c1 [project @ 1999-11-19 21:19:37 by jwe]
jwe
parents: 2847
diff changeset
22 ## Compares two strings, returning 1 if they are the same, and 0 otherwise.
3426
f8dde1807dee [project @ 2000-01-13 08:40:00 by jwe]
jwe
parents: 3361
diff changeset
23 ##
4946
48a39e2b2ab7 [project @ 2004-08-31 17:27:04 by jwe]
jwe
parents: 4257
diff changeset
24 ## @strong{Caution:} For compatibility with @sc{Matlab}, Octave's strcmp
3361
4f40efa995c1 [project @ 1999-11-19 21:19:37 by jwe]
jwe
parents: 2847
diff changeset
25 ## function returns 1 if the strings are equal, and 0 otherwise. This is
4f40efa995c1 [project @ 1999-11-19 21:19:37 by jwe]
jwe
parents: 2847
diff changeset
26 ## just the opposite of the corresponding C library function.
4f40efa995c1 [project @ 1999-11-19 21:19:37 by jwe]
jwe
parents: 2847
diff changeset
27 ## @end deftypefn
4
b4df021f796c [project @ 1993-08-08 01:26:08 by jwe]
jwe
parents:
diff changeset
28
2314
949ab8eba8bc [project @ 1996-07-12 03:58:02 by jwe]
jwe
parents: 2313
diff changeset
29 ## Author: jwe
949ab8eba8bc [project @ 1996-07-12 03:58:02 by jwe]
jwe
parents: 2313
diff changeset
30
4257
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
31 function retval = strcmp (s1, s2)
4
b4df021f796c [project @ 1993-08-08 01:26:08 by jwe]
jwe
parents:
diff changeset
32
b4df021f796c [project @ 1993-08-08 01:26:08 by jwe]
jwe
parents:
diff changeset
33 if (nargin != 2)
904
3470f1e25a79 [project @ 1994-11-09 21:22:15 by jwe]
jwe
parents: 321
diff changeset
34 usage ("strcmp (s, t)");
4
b4df021f796c [project @ 1993-08-08 01:26:08 by jwe]
jwe
parents:
diff changeset
35 endif
b4df021f796c [project @ 1993-08-08 01:26:08 by jwe]
jwe
parents:
diff changeset
36
4257
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
37 retval = 0;
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
38
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
39 if (isstr (s1))
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
40 [r1, c1] = size (s1);
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
41 if (isstr (s2))
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
42 [r2, c2] = size (s2);
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
43 if (r1 == r2 && c1 == c2)
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
44 if (c1 == 0)
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
45 retval = 1;
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
46 else
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
47 retval = all (all (s1 == s2));
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
48 endif
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
49 endif
4993
761b8d760785 [project @ 2004-09-15 18:28:56 by jwe]
jwe
parents: 4992
diff changeset
50 elseif (iscellstr (s2))
4257
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
51 [r2, c2] = size (s2);
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
52 if (r1 == 1)
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
53 t2 = s2(:);
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
54 n = length (t2);
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
55 retval = zeros (n, 1);
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
56 for i = 1:n
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
57 retval(i) = strcmp (s1, t2{i});
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
58 endfor
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
59 retval = reshape (retval, r2, c2);
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
60 elseif (r1 > 1)
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
61 if (r2 == 1 && c2 == 1)
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
62 t2 = s2{1};
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
63 retval = zeros (r1, 1);
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
64 for i = 1:r1
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
65 retval(i) = strcmp (deblank (s1(i,:)), t2);
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
66 endfor
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
67 else
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
68 t2 = s2(:);
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
69 n = length (t2);
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
70 if (n == r1)
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
71 retval = zeros (n, 1);
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
72 for i = 1:n
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
73 retval(i) = strcmp (deblank (s1(i,:)), t2{i});
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
74 endfor
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
75 retval = reshape (retval, r2, c2);
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
76 endif
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
77 endif
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
78 endif
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
79 endif
4993
761b8d760785 [project @ 2004-09-15 18:28:56 by jwe]
jwe
parents: 4992
diff changeset
80 elseif (iscellstr (s1))
3695
64ca92e02a7e [project @ 2000-07-14 18:49:06 by jwe]
jwe
parents: 3426
diff changeset
81 [r1, c1] = size (s1);
4257
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
82 if (isstr (s2))
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
83 [r2, c2] = size (s2);
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
84 if (r2 == 1)
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
85 t1 = s1(:);
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
86 n = length (t1);
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
87 retval = zeros (n, 1);
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
88 for i = 1:n
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
89 retval(i) = strcmp (t1{i}, s2);
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
90 endfor
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
91 retval = reshape (retval, r1, c1);
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
92 elseif (r2 > 1)
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
93 if (r1 == 1 && c1 == 1)
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
94 t1 = s1{1};
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
95 retval = zeros (r2, 1);
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
96 for i = 1:r2
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
97 retval(i) = strcmp (t1, deblank (s2(i,:)));
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
98 endfor
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
99 else
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
100 t1 = s1(:);
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
101 n = length (t1);
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
102 if (n == r2)
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
103 retval = zeros (n, 1);
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
104 for i = 1:n
4992
2f2afb8635f5 [project @ 2004-09-15 18:22:27 by jwe]
jwe
parents: 4946
diff changeset
105 retval(i) = strcmp (t1{i}, deblank (s2(i,:)));
4257
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
106 endfor
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
107 retval = reshape (retval, r1, c1);
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
108 endif
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
109 endif
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
110 endif
4993
761b8d760785 [project @ 2004-09-15 18:28:56 by jwe]
jwe
parents: 4992
diff changeset
111 elseif (iscellstr (s2))
4257
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
112 [r2, c2] = size (s2);
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
113 if (r1 == 1 && c1 == 1)
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
114 t1 = s1{:};
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
115 t2 = s2(:);
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
116 n = length (t2);
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
117 retval = zeros (n, 1);
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
118 for i = 1:n
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
119 retval(i) = strcmp (t1, t2{i});
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
120 endfor
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
121 retval = reshape (retval, r2, c2);
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
122 elseif (r2 == 1 && c2 == 1)
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
123 t1 = s1(:);
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
124 t2 = s2{:};
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
125 n = length (t1);
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
126 retval = zeros (n, 1);
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
127 for i = 1:n
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
128 retval(i) = strcmp (t1{i}, t2);
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
129 endfor
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
130 retval = reshape (retval, r1, c1);
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
131 elseif (r1 == r2 && c1 == c2)
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
132 t1 = s1(:);
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
133 t2 = s2(:);
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
134 n = length (t1);
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
135 for i = 1:n
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
136 retval(i) = strcmp (t1{i}, t2{i});
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
137 endfor
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
138 retval = reshape (retval, r1, c1);
321
2d04965c32fb [project @ 1994-02-01 02:09:52 by jwe]
jwe
parents: 245
diff changeset
139 else
4257
e556870ce8f0 [project @ 2003-01-02 03:14:41 by jwe]
jwe
parents: 3695
diff changeset
140 error ("strcmp: nonconformant cell arrays");
321
2d04965c32fb [project @ 1994-02-01 02:09:52 by jwe]
jwe
parents: 245
diff changeset
141 endif
2d04965c32fb [project @ 1994-02-01 02:09:52 by jwe]
jwe
parents: 245
diff changeset
142 endif
4
b4df021f796c [project @ 1993-08-08 01:26:08 by jwe]
jwe
parents:
diff changeset
143 endif
b4df021f796c [project @ 1993-08-08 01:26:08 by jwe]
jwe
parents:
diff changeset
144
b4df021f796c [project @ 1993-08-08 01:26:08 by jwe]
jwe
parents:
diff changeset
145 endfunction