How can I use the split function with multiple delimiters?
37 vues (au cours des 30 derniers jours)
Afficher commentaires plus anciens
I am trying to use the split command on a cell Array but I am getting this error:
Element 77 of the text contains 2 delimiters while the previous elements have 1. All
elements must contain the same number of delimiters.
The problem is that in the line below
software_logical/forIteratorSubsystem/Out1. Some of the elements in my have different number of delimiters.
software_math/sum
This the code I am using below. What can I do so that my program will split at the last delimiter ('/')
cellArray = split(compareBlocks,'/');
cellArray = split(compareBlocks,'/',2); %I even tride using this but it does not work
0 commentaires
Réponse acceptée
Stephen23
le 27 Fév 2020
Modifié(e) : Stephen23
le 27 Fév 2020
>> str = 'software_logical/forIteratorSubsystem/Out1';
>> [one,two] = fileparts(str)
one = software_logical/forIteratorSubsystem
two = Out1
>> str = 'software_math/sum';
>> [one,two] = fileparts(str)
one = software_math
two = sum
For character vectors in a cell array call fileparts inside of cellfun.
4 commentaires
Stephen23
le 28 Fév 2020
cellArray = cell(fileparts(compareBlocks))
will place the first output (i.e. the "path") of the split compareBLocks variable into a scalar cell array, and discards the rest. There does not seem to be much point in doing that.
Lets try my answer on a cell array, using cellfun as I mentioned:
>> C = {'software_logical/forIteratorSubsystem/Out1', 'software_math/sum'};
>> [one,two] = cellfun(@fileparts, C, 'uni',0);
>> one{:}
ans = software_logical/forIteratorSubsystem
ans = software_math
>> two{:}
ans = Out1
ans = sum
Plus de réponses (1)
Akira Agata
le 28 Fév 2020
How about using cellfun, like:
% Sample cell array
C = {'software_logical/forIteratorSubsystem/Out1', 'software_math/sum'};
% Apply 'split' for each cell
parts = cellfun(@(x) split(x,'/'),C,'UniformOutput',false);
The result is like this:
>> parts{1}
ans =
3×1 cell array
{'software_logical' }
{'forIteratorSubsystem'}
{'Out1' }
>> parts{2}
ans =
2×1 cell array
{'software_math'}
{'sum' }
2 commentaires
Stephen23
le 28 Fév 2020
"What is x in your code?"
x is the input argument to an anoymous function:
Voir également
Catégories
En savoir plus sur Logical dans Help Center et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!