我想在特定目录中找到文件的名称。我知道dir命令返回文件名,但它包含文件名及其扩展名。因此,我使用strfind删除文件的扩展名,如下所示:
a = dir(fullfile(dataset_path, [dataset_category '\qrel']))
for i= 3: length(a)
name{i} = a(i).name(1:strfind(a(i).name, '.')-1)
我想要一个没有循环的更好的方法。我想知道这是一种为此目的使用矢量化的方法。我使用了以下代码,但它返回错误
a = dir(fullfile(dataset_path, [dataset_category '\qrel']))
name = a.name(1:strfind(a.name, '.')-1)
答案 0 :(得分:1)
你可以用正则表达式来做到这一点:
name = regexprep({a.name}, '\.[^\.]*$', '');
这会收集单元格数组中的所有名称({a.name}
)。对于每个字符串,它匹配一个点(\.
),后跟字符串末尾([^\.]*
)以外的零点或多个字符($
),并删除它。感谢@Shai的“除了点”修正,这确保只有最后一个点匹配。