Splitting a cell array of multi-word strings into a cell array of single-word strings
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Illan Kramer
am 3 Feb. 2020
Kommentiert: Illan Kramer
am 3 Feb. 2020
I have a cell array of multi-word strings that is very long (many tens of thousands of cells) that I want to split into a cell array of single-word strings. Is there a way to do this without combining the split function and a for loop?
Currently, I am doing the following:
CellStrings = {'Here is my First String';'Now a second string';'And here is a third'}
SingleColumnStrings = {};
for i = 1:length(CellStrings)
temp = split(CellStrings(i));
SingleColumnStrings = [SingleColumnStrings; temp];
clear temp
end
clear i
When CellStrings gets large, this for loop takes forever. Is there a way to do this as a matrix/vector operation?
Thanks in advance.
1 Kommentar
Guillaume
am 3 Feb. 2020
Note that clear is rarely needed. clear inside a loop is a particularly bad idea and will slow the loop for no useful purpose.
Akzeptierte Antwort
fred ssemwogerere
am 3 Feb. 2020
I think this can do nicely:
SingleColumnStrings=cellstr(strsplit(strjoin(string({'Here is my First String';'Now a second string';'And here is a third'})'))')
1 Kommentar
Weitere Antworten (1)
Guillaume
am 3 Feb. 2020
Bearbeitet: Guillaume
am 3 Feb. 2020
Possiblty more efficient than the accepted answer since it doesn't require concatenating strings to then split them again:
SingleColumnStrings = regexp(CellStrings, '\S+', 'match');
SingleColumnStrings =[SingleColumnStrings{:}].';
2 Kommentare
Siehe auch
Kategorien
Mehr zu Characters and Strings finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!