Convert string to cell array
Ältere Kommentare anzeigen
How to convert string
a b 3
into cell array {'a' 'b' 3}
Akzeptierte Antwort
Weitere Antworten (3)
CHADCHAVAN RATTANASOPA
am 11 Nov. 2018
6 Stimmen
cellstr()
2 Kommentare
Souarv De
am 17 Apr. 2021
Good.
Image Analyst
am 17 Apr. 2021
str = 'a b 3';
ca = cellstr(str) % CHADCHAVIN's wrong answer
Z = textscan(str, '%s', 'Delimiter',' ')' % Geoff's answer
celldisp(Z)
ca =
1×1 cell array
{'a b 3'}
Z =
1×1 cell array
{3×1 cell}
Z{1}{1} =
a
Z{1}{2} =
b
Z{1}{3} =
3
CHADCHAVIN's answer does not give a cell array with three cells (each one containing a substring). It gives one cell (not 3) and it simply put the string into the one cell. Not what was asked for.
It must have been accepted by mistake so I'm going to unaccept it and accept Geoff's instead.
Image Analyst
am 31 Aug. 2014
Try this:
str = 'a b 3'
str(str==' ') = []; % Remove spaces.
ca = {str(1),str(2),str(3)} % Create the cell array.
celldisp(ca); % Display its values in the command window.
Martin Vatshelle
am 25 Mär. 2019
Bearbeitet: Martin Vatshelle
am 25 Mär. 2019
If you have a mix of text and numbers textscan as suggested by Geoff is a good solution.
If you only have text strsplit does exactly what you want and I feel that is a bit simpler to use.
strsplit('ab cd ef')
ans =
1×3 cell array
'ab' 'cd' 'ef'
You can specify the delimiter if it is not spaces that are your delimiters.
If you however want to split a string into single characters you could use cellstr
s = 'ab cd ef';
cellstr(s(:))' %here I transposed at the end for readability, you can skip that
ans =
1×8 cell array
'a' 'b' '' 'c' 'd' '' 'e' 'f'
Kategorien
Mehr zu Characters and Strings finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!