将字符串更改为较小的字符串

时间:2014-09-02 01:35:20

标签: string matlab

我有这个字符串:

aa= 'SAN/MOST/MOD10A1.005/2000.02.26/MOD10A1.A2000057.h01v10.005.2007163034521.hdf.xml' 

我想将其更改为:

'MOD10A1.A2000057.h01v10.005.2007163034521.hdf.xml'

如何使用Matlab做到这一点? 我尝试使用此代码,但它无法正常工作。

s=regexp(aa, '[_.]', 'split');

任何人都可以帮忙??

3 个答案:

答案 0 :(得分:2)

您可以改为使用strfind功能:

idx = strfind(aa,'/');
s = aa(idx(end)+1:end)

答案 1 :(得分:2)

strfind仅适用于R2013a及以后版本。您当然可以像以前一样使用regexp,但请查找/符号。查找/符号的最后一次出现,然后使用它并将其余字符串子集,就像Highman正在做的那样。换句话说:

aa = 'SAN/MOST/MOD10A1.005/2000.02.26/MOD10A1.A2000057.h01v10.005.2007163034521.hdf.xml';
idx = regexp(aa, '\/');
aaSubset = aa(idx(end)+1 : end);

请注意,我必须使用\字符并将其放在/字符之前,因为/是查看正则表达式时的保留符号。 aaSubset包含您正在寻找的字符串。我明白了:

aaSubset =

MOD10A1.A2000057.h01v10.005.2007163034521.hdf.xml

答案 2 :(得分:2)

使用正则表达式的另一种方法(特别是regexprep):

s = regexprep(aa, '^.*\/', '');

greedily查找从字符串开头开始到/结尾的任何字符序列,并删除它(用空字符串替换它)。


您也可以使用fileparts

[folder, name, ext] = fileparts(aa);
s = [name ext];