我遍历一个子目录,并在字符变量中获取扩展名为.txt的每个文件的名称。
var1 = dir('*.txt');
%creating a loop with index i
var2 = var1.name(i); %Getting first file name
arr1 = ['C001','C002','C003','C010'];
arr2 = ['C011','C012','C013','C014'];
文件名格式为' C001.txt'我想检查文件名var2
是属于arr1
还是arr2
(更准确地说,是变量var2
的一部分还是没有扩展名的文件名)。我可以尝试使用contains()
,但它适用于字符串而不是字符。做这项任务的好方法是什么?
答案 0 :(得分:1)
您的方法存在一些问题......
第var2 = var1.name(i);
行会给您一个错误。 vignette 函数返回dir
,如果您在数组上循环,则需要首先访问数组元素 ,然后是结构字段:
var2 = var1(i).name;
name
字段将包含文件名 plus 扩展名。看起来您想要在进行比较之前删除扩展程序,您可以使用structure array执行此操作:
[~, var2] = fileparts(var1(i).name);
当存储多个字符数组时,您通常希望将它们存储在fileparts
中,因为这样可以更容易处理,并且大多数函数都设计为在cell arrays上运行:
arr1 = {'C001','C002','C003','C010'}; % Note the curly braces!
arr2 = {'C011','C012','C013','C014'};
完成上述更改后,您可以使用(方便命名的)cell arrays of characters函数轻松检查var2
是arr1
还是arr2
的成员:
if ismember(var2, arr1)
% Do something
elseif ismember(var2, arr2)
% Do something else
end