在MATLAB中通过正则表达式从文件名中查找和删除文件扩展名

时间:2014-07-31 11:05:13

标签: regex matlab

我有一些文件扩展名为.xls.xlsx的Excel文件。我想从文件名末尾删除此文件扩展名。其中一些文件是.xls,其他文件是.xlsx,所以首先我要查找文件排泄类型(.xls.xlsx - 代码中的其他处理)以及之后删除该扩展名。

如何使用正则表达式执行此操作?

感谢。

1 个答案:

答案 0 :(得分:5)

我只使用fileparts()功能。

[sPath, sFilename, sExt] = fileparts( sFile );
sFileBase = [ sPath, sFilename];

作为您方法的提示,您可以执行open fileparts并查看源代码。

试试吧:

[sFiles, sPath] = uigetfile({'*.xls;*.xlsx','Select Excel files'; ...
                             '*.*', 'Select any file'}, ...
                            'MultiSelect', 'on');

并选择' Boolk1.xls',' Book1.xlsx'和' Book1.txt'。 sFiles是字符串的单元格数组,因此我们可以这样做:

for i = 1:length(sFiles)
    [~, sFilename, sExt] = fileparts( sFiles{i} );
    if( strcmpi( sExt, '.xls' ) )
        fprintf( '%s%s is a .xls file.\n', sFilename, sExt );
    elseif( strcmpi( sExt, '.xlsx' ) )
        fprintf( '%s%s is a .xlsx file.\n', sFilename, sExt );
    else
        fprintf( '%s%s is neither a .xls nor a .xlsx file.\n', sFilename, sExt );
    end
end

结果是:

Book1.txt is neither a .xls nor a .xlsx file.
Book1.xls is a .xls file.
Book1.xlsx is a .xlsx file.

(Matlab很简单!)