我在文件中有32个字符串(多行)。 我想要做的是创建一个新文件,并将它们放在那里,每个列有4个字符。
例如我有:
00000000000FDAD000DFD00ASD00
00000000000FDAD000DFD00ASD00
00000000000FDAD000DFD00ASD00
....
在新文件中,我希望它们显示如下:
0000 0000 000F DAD0 00DF D00A SD00
0000 0000 000F DAD0 00DF D00A SD00
你能帮助我吗?我现在正在工作几个小时,我找不到解决方案。
答案 0 :(得分:1)
首先,打开输入文件并将这些行读为字符串:
infid = fopen(infilename, 'r');
C = textscan(infid, '%s', 'delimiter', '');
fclose(infid);
然后使用regexprep
将字符串拆分为以空格分隔的4个字符组:
C = regexprep(C{:}, '(.{4})(?!$)', '$1 ');
最后,将修改后的行写入输出文件:
outfid = fopen(outfilename, 'w');
fprintf(outfid, '%s\n', C{:});
fclose(outfid);
请注意,此解决方案足够强大,可以在可变长度的行上工作。
答案 1 :(得分:0)
这是Matlab中的一种方法:
% read in file
fid = fopen('data10.txt');
data = textscan(fid,'%s');
fclose(fid);
% save new file
s = size(data{1});
newFid = fopen('newFile.txt','wt');
for t = 1:s(1) % format and save each row
line = data{1}{t};
newLine = '';
index = 1;
for k = 1:7 % seven sets of 4 characters
count = 0;
while count < 4
newLine(end + 1) = line(index);
index = index + 1;
count = count + 1;
end
newLine(end + 1) = ' ';
end
fprintf(newFid, '%s\n', newLine);
end
fclose(newFid);
答案 2 :(得分:0)
导入
fid = fopen('test.txt');
txt = textscan(fid,'%s');
fclose(fid);
转换为M by 28 char数组,转置并重新整形以在每列上具有4个char块。然后在底部添加一排空白并重新塑造。将每一行存储在一个单元格中。
txt = reshape(char(txt{:})',4,[]);
txt = cellstr(reshape([txt; repmat(' ',1,size(txt,2))],35,[])')
将每个单元格/行写入新文件
fid = fopen('test2.txt','w');
fprintf(fid,'%s\r\n',txt{:});
fclose(fid);