在另一个元胞数组中查找元胞数组的字符串
Find strings of a cell array in another cell array
var_names = {'X1','X2'};
data_pool = {'AB\CD\X1','AB\CD\X1_A','AB\CD\X1_B','AB\CD\X2','AB\CD\X2_A','AB\CD\X2_B'};
我需要数据的变量名称是 X1 和 X2。数据池中有名称相似的变量; '_A' 和 '_B' 以及字符串都有路径名,因此 data_pool 中的字符串总是比 var_names.
中的字符串长
我需要 trim 向下 data_pool 到以下内容:
var_names_new = {'AB\CD\X1','AB\CD\X2'};
只有 X1 和 X2 的完整路径,而不是其他后缀路径。
您需要检查当前 data_pool
变量是否包含 X1
或 X2
值。
result = {};
count = 0;
for i=1:length(data_pool)
for j=1:length(var_names)
new_pool = strrep(string(data_pool(i)), 'ABCD\', '');
if contains(string(var_names(j)), new_pool)
count = count+1;
val = strcat('ABCD\',new_pool);
result{1, count} = val;
end
end
end
结果:
["ABCD\X1"] ["ABCD\X2"]
result = data_pool(endsWith(data_pool, strcat('\', var_names)));
工作原理如下:
var_names = {'X1','X2'};
data_pool = {'AB\CD\X1','AB\CD\X1_A','AB\CD\X1_B','AB\CD\X2','AB\CD\X2_A','AB\CD\X2_B'};
我需要数据的变量名称是 X1 和 X2。数据池中有名称相似的变量; '_A' 和 '_B' 以及字符串都有路径名,因此 data_pool 中的字符串总是比 var_names.
中的字符串长我需要 trim 向下 data_pool 到以下内容:
var_names_new = {'AB\CD\X1','AB\CD\X2'};
只有 X1 和 X2 的完整路径,而不是其他后缀路径。
您需要检查当前 data_pool
变量是否包含 X1
或 X2
值。
result = {};
count = 0;
for i=1:length(data_pool)
for j=1:length(var_names)
new_pool = strrep(string(data_pool(i)), 'ABCD\', '');
if contains(string(var_names(j)), new_pool)
count = count+1;
val = strcat('ABCD\',new_pool);
result{1, count} = val;
end
end
end
结果:
["ABCD\X1"] ["ABCD\X2"]
result = data_pool(endsWith(data_pool, strcat('\', var_names)));
工作原理如下: