针对特定属性的数组筛选字符串Matlab

时间:2018-02-06 11:57:45

标签: string matlab filter character filenames

我在表中有一列字符串,表示由dir函数生成的文件夹中的文件名。

tmpList = struct2table(dir('myFolder'));

该文件夹包含许多不同的文件类型和文件夹。我只想要excel文件,我可以通过使用:

找到它们
filesData = [dir(['myFolder','\*.xlsx']);dir(['myFolder','\*.xls'])];

但是,如何展开/替换它,以便我可以过滤tmpList.name以仅包含具有以下属性的文件:

  • 前三个字母是:' DTE' (以大写或小写的形式出现)
  • DTE之后的所有字符都只是数字(只有6到8个字符之间的数字)
  • 扩展名为.xlsx或.xls

示例,对于以下列表,仅识别1和2以保持:

  1. ' DTE123456.xlsx'
  2. ' Dte01234567.xls'
  3. ' abc12345678.xlsx'
  4. ' DTE12345c34.xls'
  5. ' DTE123456.doc'

1 个答案:

答案 0 :(得分:3)

您可以使用正则表达式查找符合条件的文件名,然后使用cellfuntmpList中查找这些文件名的索引:

tmpList = struct2table(dir('myFolder')); % your beginning

filteredTmpList = regexpi(tmpList.name(:), '^dte\d{6,8}\.xlsx?$', 'match');
finalList = tmpList(~cellfun('isempty',filteredTmpList), :);