2016-04-26 2684 views
-1

我必须从目录中的大量文件名中读出数字和可能的一些字母。文件名称的格式为“aXXXX_bXX_XX_S.ext”,其中“X”可以是任何数字,“s”可以是任何字母或字符串。我如何提取这些数字和字符串作为单独的单元格数组?如何从matlab中提取文件名中的数字?

谢谢!

+0

欢迎来到StackOverflow!你应该告诉我们你已经尝试了什么。现在,请查看['strsplit'](http://www.mathworks.com/help/matlab/ref/strsplit.html)或['strtok'](http://www.mathworks.com/帮助/ MATLAB/REF/strtok.html)。祝你好运! –

+0

你想要一个[正则表达式](http://www.mathworks.com/help/matlab/ref/regexp.html?refresh=true)。我建议查看文档并在[regex101](https://regex101.com/)上播放以找出正确的模式。 – excaza

回答

0

首先,您可以读取目录中的所有文件。假设你的文件夹的位置存储在字符串path中,使用方法:

a=dir(mypath); 

现在你有一个结构a。文件名存储在a.name中。现在你可以使用它了。这是一个非常粗略的代码。你循环所有文件,检查第一个字母是否为a(可能有一些隐藏文件,你不需要它们)。然后,从合格的文件中提取所需的数据。

n=0; 
for i=1:numel(a) 
    if a(i).name(1)=='a' 
     n=n+1; 
     numbers{n}=strcat(a(i).name(2:5),a(i).name(8:9),a(i).name(11:12)); 
     letters{n}=a(i).name(13:find(a(i).name=='.')-1); 

    end 
end