Hi, I have a array of strings and I would like to identify all those entries that contain two substrings at the same time. For example:
My strings are: 'First Example','Second Example', 'Third Example'
My Substrings are: 'irs','xam'
So I would like to identify the first string as the only one which contains both substrings. I have found a solution, but I am convinced that there must be a more elegant and efficient way of achieving this. My code looks as follows:
clear;clc;%set variables
rbCode = {'RB_DEP_LI_EQ_EED'; ... 'RB_DEP_LI_EQ_EED_INV'; ... 'RB_DEP_LI_EQ_EED_TRS'; ... 'RB_DEP_LI_EQ_IED' 'RB_DEP_LI_EQ_IED_INV'; ... 'RB_DEP_LI_EQ_IED_TRS'; ... 'RB_DEP_LI_FI_INV'};rbMarketValue = {100; 80; 20; 70; 40; 30; 20}; %compare invested market value
strToFind ={'EQ';'_INV'};%sum up rbMarketValue for all rbCodes that have both 'EQ' and '_INV' in
%their name
a = arrayfun(@(x) strfind(rbCode,char(strToFind(x))),1:size(strToFind),'un',false);a1 = arrayfun(@(x) logical(~isempty(cell2mat(a{1,1}(x,1)))),1:size(rbCode));a2 = arrayfun(@(x) logical(~isempty(cell2mat(a{1,2}(x,1)))),1:size(rbCode));a3 = sum([a1' a2'],2);a4 = cell2mat(rbMarketValue);sumDeptInv = sum(a4(a3==2));
Any suggestion how I can achieve this? Thanks Sven
Best Answer