Dividing a string into sub-strings using a for-loop

Hi,
I have a string as shown below:
FilesID='data_190830_102602.mem,data_191030_141002.mem,data_191230_101612.mem'
I want to extract the characters between the commas - each of them is unique, as they are based on timestamps.
I have tried to built a for-loop as seen below, however, it seems not to terminate and a fault occurs;
"Index exceeds the number of array elements"
with respect to this line:
word{j} = FilesID(qnew:qnew+21)
Here is the entire code:
j = 1;
for a=1:length(FilesID)
for q = (j-1):22:length(FilesID)
qnew=q+a;
word{j} = FilesID(qnew:qnew+21)
a=a+1;
j = j+1;
end
end
Thanks

 Accepted Answer

Why a for loop? I would use strsplit
FilesID='data_190830_102602.mem,data_191030_141002.mem,data_191230_101612.mem';
prts = strsplit(FilesID,',')
prts = 1x3 cell array
{'data_190830_102602.mem'} {'data_191030_141002.mem'} {'data_191230_101612.mem'}

3 Comments

You are right. However, I am also interest in a solution based on a for-loop in order to understand such function to a greater extent. Is this possible?
I'm sure it is. I'll let you explore that.
If it helps, what you are looking for might be called parsing a string, or string tokenization. See if this example is more along the lines of what you needed.

Sign in to comment.

More Answers (0)

Categories

Find more on Loops and Conditional Statements in Help Center and File Exchange

Products

Release

R2020b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!