spitting up a character
이전 댓글 표시
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
채택된 답변
추가 답변 (1개)
Daniel Dolan
2019년 3월 7일
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,',,',',')
카테고리
도움말 센터 및 File Exchange에서 Entering Commands에 대해 자세히 알아보기
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!