Change string of text into multiple lines

1 view (last 30 days)
I have a string of text that needs to be formatted and saved as a txt file. The string is in this format:
,1,1880802442166,1,751702411341,1,751702411358,1,751702411365,1,751702411372,1,751702411389,1,751702459060,1,751702459077,1,751702459084,3,751702459091,1,751702459107,1,751702459114,2,751702459121,1,751702459145...
It needs to be output in this format:
,1,1880802442166
,1,751702411341
,1,751702411358
,1,751702411365
,1,751702411372
,1,751702411389
,1,751702459060
,1,751702459077
,1,751702459084
,3,751702459091
,1,751702459107
,1,751702459114
,2,751702459121
,1,751702459145...
It's for an inventory list that was recorded in the wrong format.
Thanks in advance,
Nick

Accepted Answer

Azzi Abdelmalek
Azzi Abdelmalek on 20 Dec 2014
s=',1,1880802442166,1,751702411341,1,751702411358,1,751702411365,1,751702411372,1,751702411389,1,751702459060,1,751702459077,1,751702459084,3,751702459091,1,751702459107,1,751702459114,2,751702459121,1,751702459145'
a=regexp(s,',','split')
a(1)=[]
b=reshape(a,2,[])'
c=cellfun(@(x,y) [',' x ',' y], b(:,1),b(:,2),'un',0)
fid=fopen('file.txt','w')
for k=1:numel(c)
fprintf(fid,'%s \r\n',c{k,:})
end
fclose(fid)
  1 Comment
Nicholas
Nicholas on 20 Dec 2014
I needed a blank line between each in value in the list, but I just added an extra
\r\n
in
fprintf(fid,'%s \r\n',c{k,:})
Thanks

Sign in to comment.

More Answers (1)

Andrei Bobrov
Andrei Bobrov on 20 Dec 2014
Edited: Andrei Bobrov on 20 Dec 2014
s = ',1,1880802442166,1,751702411341,1,751702411358,1,751702411365,1,751702411372,1,751702411389,1,751702459060,1,751702459077,1,751702459084,3,751702459091,1,751702459107,1,751702459114,2,751702459121,1,751702459145';
out = mat2cell(s,1,diff([regexp(s,',\d,'),numel(s)+1]))

Community Treasure Hunt

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

Start Hunting!