-1
我必须从目录中的大量文件名中读出数字和可能的一些字母。文件名称的格式为“aXXXX_bXX_XX_S.ext”,其中“X”可以是任何数字,“s”可以是任何字母或字符串。我如何提取这些数字和字符串作为单独的单元格数组?如何从matlab中提取文件名中的数字?
谢谢!
我必须从目录中的大量文件名中读出数字和可能的一些字母。文件名称的格式为“aXXXX_bXX_XX_S.ext”,其中“X”可以是任何数字,“s”可以是任何字母或字符串。我如何提取这些数字和字符串作为单独的单元格数组?如何从matlab中提取文件名中的数字?
谢谢!
首先,您可以读取目录中的所有文件。假设你的文件夹的位置存储在字符串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
欢迎来到StackOverflow!你应该告诉我们你已经尝试了什么。现在,请查看['strsplit'](http://www.mathworks.com/help/matlab/ref/strsplit.html)或['strtok'](http://www.mathworks.com/帮助/ MATLAB/REF/strtok.html)。祝你好运! –
你想要一个[正则表达式](http://www.mathworks.com/help/matlab/ref/regexp.html?refresh=true)。我建议查看文档并在[regex101](https://regex101.com/)上播放以找出正确的模式。 – excaza