MATLAB如何检查另一个字符数组中是否存在字符数组的一部分



我正在穿越子目录,并在字符变量中获取每个文件的名称。

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是否属于 arr1arr2(更准确地说,是可变 var2的一部分或没有扩展名的文件名(。我可以尝试使用contains(),但它可以与字符串而不是字符搭配使用。做这项任务的好方法是什么?

上面的方法有一些错误...

  1. var2 = var1.name(i);将为您带来错误。dir函数返回一个结构数组,如果您在数组上循环,则需要访问数组元素 first ,则是结构字段:

    var2 = var1(i).name;
    
  2. name字段将包含文件名 plus 扩展名。看起来您要在进行比较之前要删除扩展名,您可以使用fileparts进行比较:

    [~, var2] = fileparts(var1(i).name);
    
  3. 存储多个字符数组时,您通常希望将它们存储在单元格数组中,因为这使它们更易于处理,并且大多数功能旨在无论如何都可以在字符阵列上操作:

    arr1 = {'C001','C002','C003','C010'};  % Note the curly braces!
    arr2 = {'C011','C012','C013','C014'};
    

进行上述更改后,您可以使用(方便的(ismember函数来轻松检查var2是否是arr1arr2的成员:

if ismember(var2, arr1)
  % Do something
elseif ismember(var2, arr2)
  % Do something else
end

最新更新