2016-04-26 79 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