我有以下字符串:
str={"USD":{"last":352.49,"bid":352.49,"ask":353.6,
"high":358.75,"low":349.34,"volume":6678.7783}.....
我想在像这样的列向量中提取值
colvector=[352.49,352.49,353.6,358.75,349.34,6678.7783]
我相信sscanf
函数可用于提取所需的格式。我尝试了使用sscanf
的不同变体,但我还没设法从字符串中提取值。
fmt=['{"USD":{"last": "%f", "bid": "%f", "ask": "%f",
"high": "%f", "low": "%f", "volume": "%f"}...
例如colvector=sscanf(str,fmt)
无效。
答案 0 :(得分:0)
假设您有一个包含该文本的字符串变量,
s = 'str={"USD":{"last":352.49,"bid":352.49,"ask":353.6,"high":358.75,"low":349.34,"volume":6678.7783}.';
您可以应用正则表达式来隔离所需的字符串(由数字组成,后跟可选的小数点和数字)。为此,您使用带有'match'
选项的regexp
函数。这会产生一个字符串的单元格数组。然后,使用带有cellfun
的str2num
将每个字符串转换为数字。将所有内容组合成一行,
result = cellfun(@str2num, regexp(s, '\d+(\.\d+)?', 'match'));
对于示例字符串,这会产生:
result =
1.0e+003 *
0.3525 0.3525 0.3536 0.3588 0.3493 6.6788