0
我有一个.nc文件我在matlab中读取,并将时间变量中的信息取出。如何从答案中读取特定的数字(或单词)
的代码看起来像这样
>> ncreadatt(model_list{3},'T','units')
ans =
'months since 1850-01-01'
我想要做的就是刚刚'1850'
出来的答案。
我有一个.nc文件我在matlab中读取,并将时间变量中的信息取出。如何从答案中读取特定的数字(或单词)
的代码看起来像这样
>> ncreadatt(model_list{3},'T','units')
ans =
'months since 1850-01-01'
我想要做的就是刚刚'1850'
出来的答案。
Regular expression是一个非常强大的工具来解析和操纵字符串。
Matlab具有regexp
命令:
line = 'months since 1850-01-01';
res = regexp(line, '\s(\d+)-', 'tokens', 'once');
year = str2double(res{1})
而结果是:
year =
1850
正则表达式使用'\s(\d+)-'
手段:
\s
- 查找单个空格字符(前的空格1850
)。
'(\d+)'
- 查找一个或多个数字('\d+'
),圆括号表示所有匹配的字符将保存为“令牌”。
'-'
- 在数字后面寻找单个'-'
。
你可以在ideone上玩。
如果格式一致,那么你可以'ans(12:16)'获得第12到第16个值,这将是今年。您可以使用'str2num(ans(12:16))'将其转换为数字 – kkawabat