Main Content

本页的翻译已过时。点击此处可查看最新英文版本。

str2num

将字符数组或字符串转换为数值数组

说明

示例

X = str2num(chr) 将字符数组或字符串标量转换为数值矩阵。输入可以包含空格、逗号和分号,以指示单独的元素。如果 str2num 不能将输入解析为数值,则返回空矩阵。

str2num 函数不转换元胞数组或非标量字符串数组,并且对 +- 运算符前后的空格敏感。

注意

安全注意事项:str2num 是使用计算输入参数的 eval 函数来实现的。当使用不可信用户输入调用 str2num 时,请验证输入以避免意外的代码执行。例如,来自您可能不认识的用户的输入或您无法控制的来源的数据就属于不可信用户输入。如果您需要解决此问题,请考虑以下方法:

  • 验证 str2num 的输入。首先,搜索允许的操作,例如使用 ()/*+-. 以及字母 ei。然后,如果发现其他操作,禁止执行。

  • str2double 等函数替换 str2num

非预期的副作用:此外,当输入包含函数名称时,可能会出现其他非预期的副作用。为了避免这些问题,请使用 str2double

示例

[X,tf] = str2num(chr) 还返回第二个输出参数,如果 str2num 成功转换 chr,则返回 1 (true)。否则,str2num 返回 0 (false)。

示例

全部折叠

转换表示数字的字符向量。

X = str2num('100')
X = 100
X = str2num('100 200 300 400')
X = 1×4

   100   200   300   400

str2num 可以解释指数记数法。

X = str2num('12e-3 5.9e-3 -8.1e-3 2.56e-3; 5 11.2 17.9 33')
X = 2×4

    0.0120    0.0059   -0.0081    0.0026
    5.0000   11.2000   17.9000   33.0000

使用 str2numuint16 将字符向量转换为无符号 16 位整数。

X = str2num('256');
X = uint16(X)
X = uint16
    256

将包含 truefalse 的字符向量转换为逻辑数组。

X = str2num('false true true false')
X = 1x4 logical array

   0   1   1   0

返回失败的转换状态。tf0X 为空矩阵。

[X,tf] = str2num('12e-3 m/s, 5.9e-3 m/s')
X =

     []
tf = logical
   0

如果删除多余的文本 (m/s),则转换成功。

[X,tf] = str2num('12e-3 5.9e-3')
X = 1×2

    0.0120    0.0059

tf = logical
   1

输入参数

全部折叠

数值矩阵的文本表示形式,指定为字符数组或字符串标量。

表示数值矩阵的文本可以包含空格、逗号或分号,例如 '5''10,11,12''5,10;15,20'。除数值和分隔符之外,输入文本还可以包含以下各项:

  • 小数点

  • 前导 +- 符号

  • 字母 ed,后接 10 的幂指数

  • 字母 ij,指示复数或虚数

  • truefalse,指示逻辑值

空格字符的存在可能会对结果产生影响。例如,str2num('1+2i')str2num('1 + 2i') 都返回复数 1.0000 + 2.0000i,而 str2num('1 +2i') 返回 1×2 向量 [1.0000 + 0.0000i 0.0000 + 2.0000i]。为了避免此问题,请使用 str2double 函数。

str2num 仅转换字符数组和字符串标量。要将非标量字符串数组或元胞数组转换为数值数组,请使用 str2double 函数。

输出参数

全部折叠

输出数组,以数值矩阵形式返回。

True 或 false 结果,以数据类型 logical10 形式返回。

在 R2006a 之前推出