Help with splitting a string into a character array.

39 vues (au cours des 30 derniers jours)
Benjamin Carpenter
Benjamin Carpenter le 5 Nov 2017
Modifié(e) : Stephen23 le 7 Nov 2021
Let's say I have a string s='Potato'.
How would I split that up into an array so that it looks like t='P, o, t, a, t, o'?
I'm currently doing it like this:
%%Choose word
word=datasample(wordbank,1)
%identify length of word
wordlength=strlength(word)
sol = split(word,"")
The only problem with doing it this way is that there are two blank spots and the beginning and end of the character array. It looks like this when outputted:
"" "P" "o" "t" "a" "t" "o" ""
How can I split it so that the blank values at the beginning and end aren't there?
  1 commentaire
Fady Samann
Fady Samann le 5 Sep 2020
the string is already an array of char. So, s(1) is 'P'. However, if you want to remove the blanks, you have to do it by a 'for' loop and test for blanks with 'if' condition.
s=' Potato ';
c=1;
for i=1:length(s)
if s(i)~=' '
new_s(c)=s(i);
c=c+1;
end
end

Connectez-vous pour commenter.

Réponse acceptée

Mischa Kim
Mischa Kim le 5 Nov 2017
Modifié(e) : Mischa Kim le 5 Nov 2017
You could use
s = 'Potato';
t = num2cell(s)
t =
1×6 cell array
{'P'} {'o'} {'t'} {'a'} {'t'} {'o'}
  3 commentaires
Akash Yadav
Akash Yadav le 7 Nov 2021
isn't num2cell or num2string is used on a number array to convert it to string or cell array? what explains the working of num2cell on a string?
Stephen23
Stephen23 le 7 Nov 2021
Modifié(e) : Stephen23 le 7 Nov 2021
"isn't num2cell or num2string is used on a number array to convert it to string or cell array?"
No, NUM2CELL splits the elements of the input array into cells of a cell array. It does not "convert" anything: all of the original data still exists with its original class, just (in general) in more but smaller (e.g. scalar) arrays than beforehand.
"what explains the working of num2cell on a string?"
NUM2CELL operates the same regardless of the input class (this is clearly documented in the NUM2CELL documentation, where it lists all of the permitted input classes):
str = ["hello","world"]
str = 1×2 string array
"hello" "world"
out = num2cell(str)
out = 1×2 cell array
{["hello"]} {["world"]}
Storing scalar strings in a cell array should be avoided.
PS: the name is likely a relic of when MATLAB was young and only supported numeric arrays.
PPS: NUM2STRING is not a MATLAB function:
num2string(pi)
Unrecognized function or variable 'num2string'.

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur Cell Arrays 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!

Translated by