function delimited=delimitWithQualifier(str,delimiter,qualifier,comment)
%function delimited=delimitWithQualifier(str,delimiter,qualifier,comment)
%inputs: str:the string to be delimited
% delimiter:the delimiter ex.','
% qualifier:text qualifier ex.'"'
% comment:a character denoting that the string is a comment to ignore ex.'#'
%
%example 1:
%delimited=delimitWithQualifier('mplampla,mpla,"mpla,mpla,mpla",mpla',',','"','#')
%returns delimited =
% 'mplampla'
% 'mpla'
% 'mpla,mpla,mpla'
% 'mpla'
%
%example 2:
%delimited=delimitWithQualifier('#mplampla,mpla,"mpla,mpla,mpla",mpla',',','"','#')
%returns delimited =
% []
if(~isempty(str)&&str(1)~=comment)
qualIndices=strfind(str,qualifier);%qualifiers indices
delimIndices=strfind(str,delimiter);%delimeters indices
%remove the commas between qualifiers
for i=1:2:length(qualIndices)
%find delimiters that are between qualifiers
a=find(delimIndices>qualIndices(i));
b=find(delimIndices<qualIndices(i+1));
c=ismember(a,b);%find commons, so has to been removed from delimiters vector
d=nonzeros(a.*c);%indices of delimiters to remove
e=(ismember(delimIndices,delimIndices(d))-1)*(-1);%invert, to keep
delimIndices=nonzeros(delimIndices.*e)';
end
%cut in delimeters
delimited={};
position=1;
for i=1:length(delimIndices)+1
if(i<=length(delimIndices))
s=str(position:delimIndices(i)-1);%remove qualifiers if there
else
s=str(position:end);
end
if(s(1)==qualifier)
s=s(2:end);
end
if(s(end)==qualifier)
s=s(1:end-1);
end
if(i<=length(delimIndices))
position=delimIndices(i)+1;
end
delimited=[delimited;s];
end
else
delimited=[];
end