Mercurial > hg > octave-nkf
annotate scripts/strings/str2num.m @ 20737:2d9ec16fa960
Print error, rather than aborting, if mex function mxIsFromGlobalWS is used (bug #46070).
* mex.cc (mxIsFromGlobalWS): Call mexErrMsgTxt rather than abort() in function.
author | Rik <rik@octave.org> |
---|---|
date | Tue, 29 Sep 2015 12:00:11 -0700 |
parents | df437a52bcaf |
children |
rev | line source |
---|---|
19898
4197fc428c7d
maint: Update copyright notices for 2015.
John W. Eaton <jwe@octave.org>
parents:
19790
diff
changeset
|
1 ## Copyright (C) 1996-2015 Kurt Hornik |
2558 | 2 ## |
3 ## This file is part of Octave. | |
4 ## | |
5 ## Octave is free software; you can redistribute it and/or modify it | |
6 ## under the terms of the GNU General Public License as published by | |
7016 | 7 ## the Free Software Foundation; either version 3 of the License, or (at |
8 ## your option) any later version. | |
2558 | 9 ## |
10 ## Octave is distributed in the hope that it will be useful, but | |
11 ## WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |
13 ## General Public License for more details. | |
14 ## | |
15 ## You should have received a copy of the GNU General Public License | |
7016 | 16 ## along with Octave; see the file COPYING. If not, see |
17 ## <http://www.gnu.org/licenses/>. | |
2558 | 18 |
3361 | 19 ## -*- texinfo -*- |
13178
89fb0e668825
str2num.m: Use more modern code practices
Rik <octave@nomad.inbox5.com>
parents:
13035
diff
changeset
|
20 ## @deftypefn {Function File} {@var{x} =} str2num (@var{s}) |
12945
0c74237b3479
str2num.m: Add second output indicating state of the conversion.
Ben Abbott <bpabbott@mac.com>
parents:
11587
diff
changeset
|
21 ## @deftypefnx {Function File} {[@var{x}, @var{state}] =} str2num (@var{s}) |
20374
df437a52bcaf
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
20038
diff
changeset
|
22 ## Convert the string (or character array) @var{s} to a number (or an array). |
df437a52bcaf
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
20038
diff
changeset
|
23 ## |
df437a52bcaf
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
20038
diff
changeset
|
24 ## Examples: |
8442
502e58a0d44f
Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7411
diff
changeset
|
25 ## |
502e58a0d44f
Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7411
diff
changeset
|
26 ## @example |
502e58a0d44f
Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7411
diff
changeset
|
27 ## @group |
13035
8abb190e6cc8
doc: Improve strnum() docstring
Rik <octave@nomad.inbox5.com>
parents:
12945
diff
changeset
|
28 ## str2num ("3.141596") |
8abb190e6cc8
doc: Improve strnum() docstring
Rik <octave@nomad.inbox5.com>
parents:
12945
diff
changeset
|
29 ## @result{} 3.141596 |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
30 ## |
14327
4d917a6a858b
doc: Use Octave coding conventions in @example blocks of docstrings.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
31 ## str2num (["1, 2, 3"; "4, 5, 6"]) |
4d917a6a858b
doc: Use Octave coding conventions in @example blocks of docstrings.
Rik <octave@nomad.inbox5.com>
parents:
14138
diff
changeset
|
32 ## @result{} 1 2 3 |
13035
8abb190e6cc8
doc: Improve strnum() docstring
Rik <octave@nomad.inbox5.com>
parents:
12945
diff
changeset
|
33 ## 4 5 6 |
8442
502e58a0d44f
Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7411
diff
changeset
|
34 ## @end group |
502e58a0d44f
Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7411
diff
changeset
|
35 ## @end example |
11587
c792872f8942
all script files: untabify and strip trailing whitespace
John W. Eaton <jwe@octave.org>
parents:
11523
diff
changeset
|
36 ## |
12945
0c74237b3479
str2num.m: Add second output indicating state of the conversion.
Ben Abbott <bpabbott@mac.com>
parents:
11587
diff
changeset
|
37 ## The optional second output, @var{state}, is logically true when the |
13931
9de488c6c59c
doc: Spellcheck documentation before 3.6.0 release
Rik <octave@nomad.inbox5.com>
parents:
13315
diff
changeset
|
38 ## conversion is successful. If the conversion fails the numeric output, |
13035
8abb190e6cc8
doc: Improve strnum() docstring
Rik <octave@nomad.inbox5.com>
parents:
12945
diff
changeset
|
39 ## @var{x}, is empty and @var{state} is false. |
12945
0c74237b3479
str2num.m: Add second output indicating state of the conversion.
Ben Abbott <bpabbott@mac.com>
parents:
11587
diff
changeset
|
40 ## |
20374
df437a52bcaf
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
20038
diff
changeset
|
41 ## @strong{Caution:} As @code{str2num} uses the @code{eval} function to do the |
df437a52bcaf
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
20038
diff
changeset
|
42 ## conversion, @code{str2num} will execute any code contained in the string |
df437a52bcaf
doc: Update more docstrings to have one sentence summary as first line.
Rik <rik@octave.org>
parents:
20038
diff
changeset
|
43 ## @var{s}. Use @code{str2double} for a safer and faster conversion. |
13178
89fb0e668825
str2num.m: Use more modern code practices
Rik <octave@nomad.inbox5.com>
parents:
13035
diff
changeset
|
44 ## |
17281
bc924baa2c4e
doc: Add new @qcode macro for code samples which are quoted.
Rik <rik@octave.org>
parents:
14363
diff
changeset
|
45 ## For cell array of strings use @code{str2double}. |
8442
502e58a0d44f
Fix docstrings, add examples, references and tests to string functions
Thorsten Meyer <thorsten.meyier@gmx.de>
parents:
7411
diff
changeset
|
46 ## @seealso{str2double, eval} |
3361 | 47 ## @end deftypefn |
2558 | 48 |
49 ## Author: jwe | |
50 | |
12945
0c74237b3479
str2num.m: Add second output indicating state of the conversion.
Ben Abbott <bpabbott@mac.com>
parents:
11587
diff
changeset
|
51 function [m, state] = str2num (s) |
2558 | 52 |
19790
446c46af4b42
strip trailing whitespace from most source files
John W. Eaton <jwe@octave.org>
parents:
17744
diff
changeset
|
53 if (nargin != 1) |
6046 | 54 print_usage (); |
13315
fa1b2b394195
str2num.m: Simplify and speed up code by using indexing.
Rik <octave@nomad.inbox5.com>
parents:
13178
diff
changeset
|
55 elseif (! ischar (s)) |
13178
89fb0e668825
str2num.m: Use more modern code practices
Rik <octave@nomad.inbox5.com>
parents:
13035
diff
changeset
|
56 error ("str2num: S must be a string or string array"); |
89fb0e668825
str2num.m: Use more modern code practices
Rik <octave@nomad.inbox5.com>
parents:
13035
diff
changeset
|
57 endif |
89fb0e668825
str2num.m: Use more modern code practices
Rik <octave@nomad.inbox5.com>
parents:
13035
diff
changeset
|
58 |
13315
fa1b2b394195
str2num.m: Simplify and speed up code by using indexing.
Rik <octave@nomad.inbox5.com>
parents:
13178
diff
changeset
|
59 s(:, end+1) = ";"; |
fa1b2b394195
str2num.m: Simplify and speed up code by using indexing.
Rik <octave@nomad.inbox5.com>
parents:
13178
diff
changeset
|
60 s = sprintf ("m = [%s];", reshape (s', 1, numel (s))); |
13178
89fb0e668825
str2num.m: Use more modern code practices
Rik <octave@nomad.inbox5.com>
parents:
13035
diff
changeset
|
61 state = true; |
89fb0e668825
str2num.m: Use more modern code practices
Rik <octave@nomad.inbox5.com>
parents:
13035
diff
changeset
|
62 eval (s, "m = []; state = false;"); |
89fb0e668825
str2num.m: Use more modern code practices
Rik <octave@nomad.inbox5.com>
parents:
13035
diff
changeset
|
63 if (ischar (m)) |
89fb0e668825
str2num.m: Use more modern code practices
Rik <octave@nomad.inbox5.com>
parents:
13035
diff
changeset
|
64 m = []; |
89fb0e668825
str2num.m: Use more modern code practices
Rik <octave@nomad.inbox5.com>
parents:
13035
diff
changeset
|
65 state = false; |
89fb0e668825
str2num.m: Use more modern code practices
Rik <octave@nomad.inbox5.com>
parents:
13035
diff
changeset
|
66 endif |
2558 | 67 |
68 endfunction | |
7411 | 69 |
13178
89fb0e668825
str2num.m: Use more modern code practices
Rik <octave@nomad.inbox5.com>
parents:
13035
diff
changeset
|
70 |
14363
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14327
diff
changeset
|
71 %!assert (str2num ("-1.3e2"), -130) |
f3d52523cde1
Use Octave coding conventions in all m-file %!test blocks
Rik <octave@nomad.inbox5.com>
parents:
14327
diff
changeset
|
72 %!assert (str2num ("[1, 2; 3, 4]"), [1, 2; 3, 4]) |
7411 | 73 |
13315
fa1b2b394195
str2num.m: Simplify and speed up code by using indexing.
Rik <octave@nomad.inbox5.com>
parents:
13178
diff
changeset
|
74 %!test |
fa1b2b394195
str2num.m: Simplify and speed up code by using indexing.
Rik <octave@nomad.inbox5.com>
parents:
13178
diff
changeset
|
75 %! [x, state] = str2num ("pi"); |
fa1b2b394195
str2num.m: Simplify and speed up code by using indexing.
Rik <octave@nomad.inbox5.com>
parents:
13178
diff
changeset
|
76 %! assert (state); |
fa1b2b394195
str2num.m: Simplify and speed up code by using indexing.
Rik <octave@nomad.inbox5.com>
parents:
13178
diff
changeset
|
77 %! [x, state] = str2num ("Hello World"); |
fa1b2b394195
str2num.m: Simplify and speed up code by using indexing.
Rik <octave@nomad.inbox5.com>
parents:
13178
diff
changeset
|
78 %! assert (! state); |
fa1b2b394195
str2num.m: Simplify and speed up code by using indexing.
Rik <octave@nomad.inbox5.com>
parents:
13178
diff
changeset
|
79 |
20038
9fc020886ae9
maint: Clean up m-files to follow Octave coding conventions.
Rik <rik@octave.org>
parents:
19898
diff
changeset
|
80 ## Test input validation |
13178
89fb0e668825
str2num.m: Use more modern code practices
Rik <octave@nomad.inbox5.com>
parents:
13035
diff
changeset
|
81 %!error str2num () |
89fb0e668825
str2num.m: Use more modern code practices
Rik <octave@nomad.inbox5.com>
parents:
13035
diff
changeset
|
82 %!error str2num ("string", 1) |
13315
fa1b2b394195
str2num.m: Simplify and speed up code by using indexing.
Rik <octave@nomad.inbox5.com>
parents:
13178
diff
changeset
|
83 %!error <S must be a string> str2num ({"string"}) |
7411 | 84 |