str2num()返回一个空值

时间:2018-01-14 23:04:41

标签: regex matlab

我有一个由

定义的字符串变量
data2= '{ "fromID"  1    "toID"     2    "value"     [ 20   18] }    { "fromID"     1    "toID"     3    "value"     [ 12   12] }   ';

我想摆脱变量中的任何文本并获得一行向量:

[1 2 20 18 1 3 12 12]

我使用了以下代码:

data2(regexp(data2, '["fromID", "toID", "value"]')) = []
data2(regexp(data2, '[[,],{,}]')) = []

它给了我一个字符串

'1      8       20  18      1       11      12  12' 

它的类是char。当我应用[data2, OK] = str2num(data2)时,我得到一个空变量,OK的值为0.值之间的空格是问题吗?如何将其转换为数字向量?

1 个答案:

答案 0 :(得分:4)

使用'match'regexp密钥可能更容易并直接匹配数字:

>> out

out =

     1     2    20    18     1     3    12    12

返回:

data2= '{ "fromID"     1    "toID"     2    "value"     [ 20   18] }    { "fromID"     1    "toID"     3    "value"     [ 12   12] }   ';

data2(regexp(data2,'["fromID","toID","value"]'))=[];
data2(regexp(data2,'[[,],{,}]'))=[];

out = sscanf(data2, '%f');

如果由于某种原因你必须使用其他方法,你可以利用sscanf来解析结果字符串:

regexp

返回相同的内容。请注意,此方法返回列向量,其中上面的直接.box方法返回行向量。