spitting up a character
Show older comments
I want to split up any given number (as a character) with "," in such a way that if there is a 2 or a 6, it and the next digit are taken as a pair and put a "," around them.
e.g. '1357320676222345' would become '13573,20,67,62,22,345'
my attempts just end up just putting a lot of ',' around the first pair that meets this condition
I realise it has to do with the fact the character length keeps increasing with each itteration, but I don't know how to get around this problem.
clear
c = '1357320676222345'
L = length(c)
for i = 1:L
if c(i) == '2'
j = i
c = insertBefore(c,i,',')
c = insertAfter(c,i+2,',')
continue
end
if c(i) == '6'
j = i
c = insertBefore(c,i,',')
c = insertAfter(c,i+2,',')
continue
end
end
Accepted Answer
More Answers (1)
Daniel Dolan
on 7 Mar 2019
How about htis?
clear
c = '1357320676222345';
L = length(c);
out=repmat('0',[1 3*L]);
i=1;
k=1;
while i < L
if (c(i) == '2') || (c(i) == '6')
out(k:k+3)=[',' c(i:i+1) ','];
k=k+4;
i=i+2;
else
out(k)=c(i);
k=k+1;
i=i+1;
end
end
out(k)=c(end);
c=out(1:k);
c=strrep(c,',,',',')
Categories
Find more on Entering Commands in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!