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

use*_*243 1 regex matlab

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

我怎么能用正则表达式做到这一点?

谢谢.

Ric*_*ard 5

我只是使用这个fileparts()功能.

[sPath, sFilename, sExt] = fileparts( sFile );
sFileBase = [ sPath, sFilename];
Run Code Online (Sandbox Code Playgroud)

作为方法的提示,您可以open fileparts查看源代码.

我们试试吧:

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

并选择"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
Run Code Online (Sandbox Code Playgroud)

结果是:

Book1.txt is neither a .xls nor a .xlsx file.
Book1.xls is a .xls file.
Book1.xlsx is a .xlsx file.
Run Code Online (Sandbox Code Playgroud)

(Matlab很简单!)