我需要从index.html文件的每一行中删除'index.html'字符串....
我需要在MATLAB中完成。
这是我到目前为止所拥有的......
我不知道在修改它之后如何写行,回到html文件中的同一行。
fid=fopen('index.html');
while ~feof(fid)
tline=fgetl(fid);
if ~isempty(strfind(tline,'index.html'))
remline=strrep( tline ,'index.html','');
**% fprintf(fid,remline);
% fprintf('\n')**
end
end
这个解决方案对我有用:
function WriteToFile(filename)
fid = fopen(filename, 'r+');
fid2 = fopen('index.txt', 'w');
while ~feof(fid)
tline=fgetl(fid);
if ~isempty(strfind(tline,'index.html'))
remline=strrep(tline,'index.html','');
fprintf(fid2, '%s\r\n', remline);
else
fprintf(fid2, '%s\r\n', tline);
end
end
fclose(fid);
fclose(fid2);
delete(filename)
keyboard
movefile('index.txt','index.html')
答案 0 :(得分:2)
这是一个示例函数:
function WriteToFile(filename, text)
%open file with write permission
fid = fopen(filename, 'w');
%write a line of text
fprintf(fid, '%d\n', text);
%close file
fclose(fid);
答案 1 :(得分:2)
将%d替换为%s用于实际文本
答案 2 :(得分:1)
如果您正在使用文本文件,那么研究fileread
和textscan
等功能的文档会很有用。你正在采取的方法没有任何问题(好吧,除了显而易见的事情,你还没有使用它)但是它比它需要的更费力。
我希望如果您将文件读入Matlab字符串(空间限制允许),然后在其上运行正则表达式,您可以在oner中进行替换。
答案 3 :(得分:1)
您对fopen()
的调用会打开文件以供阅读,这就是fprintf()
调用失败的原因。但是,这种方法不会按原样运行,因为您正在更改文本行的长度。
我建议你从输入文件中读取每一行,对其进行更改,然后将其写入临时输出文件。处理完每个输入行后,关闭这两个文件,删除输入文件,并将临时输出文件重命名为原始输入文件名。
或者,正如HPM建议的那样,将所有文件一次性读入内存,处理每一行,然后将所有内容写入输入输入文件的顶部。
答案 4 :(得分:0)
修改Niko的答案(用%s替换%d)将实际文字放入文件a1.m:
fid = fopen('a1.m','w');%open file for writing
fprintf(fid, '%s\n', 'some_text');%write a line of text
fclose(fid);%close file