我有一个由
定义的字符串变量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.值之间的空格是问题吗?如何将其转换为数字向量?
答案 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
方法返回行向量。